利用OpenAPI,轻松实现多端接入API

问题
对于一个前后端分离,或者拥有多个客户端的项目,如果没有一个通用且不限语言的规范来描述服务器的API,当你尝试让AI来接入API时以实现你的功能时,将会异常繁琐。
如果后端接口发生调整,也需要手动口述或临时组织文本,向AI描述修改的详情和数据结构。

好处
1.只需要同步该文件,即可确保AI在实现各个客户端的时候,使用一致的格式和数据结构来调用后端API
2.OpenAPI受到广泛兼容,便于API调试工具(比如Apifox、postman等)和测试平台直接导入

我是怎么做的

  • 环境:后端使用了proto来定义接口协议(不使用proto的也可以通过Skill或项目规则来生成openapi.yaml)
    我使用了proto提供的OpenAPI插件,每次编译协议,都会帮我生成openapi.yaml文件。我只需要将该文件同步到前端或其他客户端项目下,告诉AI通过<api名称或路径>实现XXX功能,界面要求xxx,接口文档位于openapi.yaml
    编译命令(省略了具体编程语言的编译选项)
protoc --proto_path=./api \
	       --openapi_out=fq_schema_naming=true,default_response=false:. \
	       $(API_PROTO_FILES)

ps:API_PROTO_FILES是proto文件的路径

我不使用proto怎么办?
如果你的项目不使用protobuffer(proto),也可以在后端项目中,通过包含但不限于以下两种方式来生成和维护openapi.yaml文件:

1.使用项目规则 在后端项目的项目规则中,要求在接口变更时更新位于根目录的openapi.yaml文件(鉴于不同模型偏好不同,在指定文件时,最好是可以直接指定路径,避免不同模型偏好不同重复生成,这里演示放在根目录下)
2.使用skill 在后端项目中,使用可以生成并维护openapi.yaml文件的skill来辅助你(比如:openapi-spec-generation

3 个赞

说得好,我用swagger

3 个赞

proto也有swagger插件,不过我不喜欢swagger的格式。我用的框架默认是走OpenAPI,加上我觉得swagger低效且冗余,swagger推荐和swagger webUI使用,但是通常的,我都是直接导入到Apifox

2 个赞

各有各的好吧,我的场景是微服务开发,有很多数据结构需要服用,这一点在swaager中,并不太符合我的需求

3 个赞

学习收藏了

3 个赞

大佬谦虚了,我就是来混个脸熟 :distorted_face:

3 个赞