设计 API 接口返回的 JSON 数据格式有没有比较流行的最佳实践?

2016-08-05 18:45:08 +08:00
 system

最近我们公司开发一个项目, PC 端 手机 APP 端 手机网页端 设计 API 接口返回的 JSON 数据格式有没有比较流行的最佳实践?

目前找了以下几种版本

版本 1 : 成功执行: head Status Code:2XX

json {"id":51,"age":58,"name":"lifei"}

失败执行 head Status Code:4XX-5XX {"message":"xxxxxx 错误","errors:{}}

版本 2 : 成功和失败执行 head Status Code:2xx

json {"code":"0","message:"信息","data":{}}

版本 3: 成功执行: head Status Code:2XX

json {"id":51,"age":58,"name":"lifei"}

失败执行 head Status Code:4XX-5XX {"code":10001, "message":"xxxxxx 错误","errors:{}}

2334 次点击
所在节点    问与答
6 条回复
bdbai
2016-08-05 18:51:55 +08:00
可以参考 REST 。
个人偏好版本 1 ,毕竟 HTTP 状态码已经有语义了。
abelyao
2016-08-05 22:14:33 +08:00
实践下来发现, http 的状态是反映网络情况的,自定义状态是反映业务处理结果的,搞混了在客户端不好处理,最后还是分开了。

也可能是我 REST 没玩熟
bdbai
2016-08-05 23:58:16 +08:00
@abelyao 如果网络有问题的话,状态码也收不到了吧
abelyao
2016-08-06 00:00:39 +08:00
@bdbai 网络有问题收到 http 的状态码,例如 408 请求超时,对于这些 http 类的错误状态,可以把 http 请求做一个封装,对 response error 做个统一处理,这部分我觉得和业务错误是要区分开的。
bdbai
2016-08-06 00:15:19 +08:00
@abelyao 这样的话约定好错误定义也不赖,很多网站也是这么做的。
pljhonglu
2016-11-18 14:15:18 +08:00
内部使用,两种都可以。
对外提供 API ,通常 RESTAPI 。

实际操作中,项目开始时跟后端沟通接口,都倾向于把业务状态放到 body 中。主要考虑应该是可以套用现有的代码逻辑,不需要做太多修改。而且对于前端来说,两种方式处理起来其实并没有太大的区别,所以也没必要非得搞得那么清真~

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

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

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

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

© 2021 V2EX