后端 API 开发流程分享-自动生成文档

2019-05-12 19:27:43 +08:00
 skyrem

#写在前面

首先我所在的是小公司小项目,我也研究过 apiary 的开发流程,跟我现在的实际流程不符,没有设计 api 的阶段,自然没有 api-mock,所以才有了我现在的开发流程:

明确需求->编写 api->测试->自动生成文档

#需要的工具

postman

postman to blueprint pmtoapib

aglio

requester (optional)

#开发流程

明确了需求以后,就开始编写 api 供前端调用 因为需要测试,我觉得apijson应该也挺适合这个开发流程的,只是目前暂时没有使用过。

api 写好之后就使用 postman 测试接口是否工作正常,这里我用的是 sublime 的 requester 插件做测试,postman 有一个capture的功能,大概意思就是你在使用 requester 测试接口的时候配置一个 proxy 地址,像这样

###env
8min = 'http://8min.somesite.com/api/'

# postman capture
proxies = {
  "http": "http://127.0.0.1:5555",
  "https": "http://127.0.0.1:5555",
}
###env


## group 1
# get('httpbin.org/get', params={'key1': 'value1', 'key2': 'value2'})

post(8min + 'userinfo/getUserInfo', json={'user_id': 1}, proxies=proxies)

,开着 postman,你的请求就会被记录下来。 到这里其实可以用 postman 的团队分享功能推给前端,然后前端就可以根据 postman 里的数据去请求接口了

这个流程其实 apizza 也可以做,apizza 我用了一段时间总觉得不太好用,可能我还是希望能像我现在这个流程一样,能在编辑器中把开发和测试的工作都做了,自动生成个文档比较好

测试通过之后把 postman 里的数据导出成 json 文件,然后用上面提到的 pmtoapib 转成 blueprint 格式,注意 postman 导出的时候要选 collection v2 格式,v2.1 这个 pmtoapib 的工具貌似还不支持,也可以转文档,但是文档里不带 api 接口请求到的数据样例

最后,使用 aglio 把转换的 apib 文件生成 html 格式的文档,大功告成!

3525 次点击
所在节点    分享发现
10 条回复
undeflife
2019-05-12 19:39:15 +08:00
在 api 的实际开发前先写 api 设计文档和示例代码其实是从需要设计者站着使用者角度整体的思考 api 各个细节,跳过这一步直接开发很自然的以开发的便利性为主和可能忽略掉使用者的需求,这样没有涉及的 api 使用工具产生出再详细的文档一样没法避免使用 api 的人骂垃圾,开发 api 的骂使用者 sb 的情况
skyrem
2019-05-12 19:48:18 +08:00
@undeflife #1 这样前后端互相责怪的情况确实是我的这个流程中无法避免的
xsir2020
2019-05-12 23:52:52 +08:00
而且没有设计的话,很容易变成 rpc 形式的 api , 如 getuserinfo
稍微有设计的话,可能更容易变成偏 restful 风格一些
makdon
2019-05-12 23:53:08 +08:00
谢谢分享。postman 的自带的文档只能在线看不方便归档,找了各种方法没解决,当时听说过 blueprint,想不到还有
postman 转 blueprint 的工具。
prasanta
2019-05-13 10:33:23 +08:00
现在有一个不用文档的解决方案,前端使用 json 描述一个组件,json 对应一个表单验证。组件 json 与校验 json 都是从后端返回,前端对字段类型无感知。
shuizhengqi
2019-05-13 13:48:39 +08:00
swagger 不是挺好?
skyrem
2019-05-15 09:58:05 +08:00
@shuizhengqi #6 前面已经说过了,swagger 和 apiary 差不多,只是我没有设计 api 的阶段

不过 1,3 楼两位老哥的回复让我重新审视了设计 api 的重要性,只是目前我所在的环境无法推行这样完整的工作流
skyrem
2019-05-15 09:59:03 +08:00
@prasanta #5 你是指 apijson 吗
prasanta
2019-05-15 14:29:42 +08:00
前后端用同一 jsonschema
balabalaguguji
2019-12-24 11:45:03 +08:00
强烈推荐你试下易文档,接口文档、接口测试、Mock 整合在一起的,可以生成非常漂亮的文档
https://easydoc.top

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/563402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX