[API 设计] 大家在设计 API 的时候,获取单条信息是直接返回条目主体还是包在 response.data 里?

2018-10-23 15:16:49 +08:00
 nyse
GET api/v1/resource/1

返回示例 1:

{
    status: "success",
    data: {...item_body...}
}

返回示例 2:

{
    ...item_body...
}

以上两种哪一种比较好?

第一种比较方便前端判断状态,但由于有 HTTP Status Code 来表示状态,这样做似乎又是多余的。

说说你们喜欢哪种,以及对接过的其他平台的 API 有哪种比较多。

1492 次点击
所在节点    问与答
13 条回复
qiayue
2018-10-23 15:45:37 +08:00
虽然很多人通过各种分析说有 HTTP Status Code 就足够了,但是,实际使用中还是第一种更方便
KyonLi
2018-10-23 15:46:46 +08:00
knightlhs
2018-10-23 16:10:59 +08:00
只有 HTTP Status Code 是不够的 因为还需要业务代码
另外国内各种奇葩网络环境 会在 非 200 有各种诡异的情况 投毒 注入等 需要考虑异常情况(不考虑 ssl )
whypool
2018-10-23 16:13:21 +08:00
{
code:123,
message:'ok',
data:...
}
LINAICAI
2018-10-23 16:18:34 +08:00
写成 2 的话,客户端会打你喔
gy911201
2018-10-23 16:23:42 +08:00
我用 2,如果出了问题
http code 就不为 200,
再显示一个结构是
{
"code": 1,
"message":""
}
的响应出来,这样终端那边很多情况只需要注册一个全局的异常处理就可以了(弹提示)
huaizhouYu
2018-10-23 16:23:54 +08:00
毫无疑问是 1
limuyan44
2018-10-23 17:45:28 +08:00
http 状态码来判断业务本来就是不对的,这个只能代表 http 请求响应状态又不能代表业务处理状态。不然密码输错给前端反个 500 试试,不砍死你。都是 rest 害得。
nyse
2018-10-23 17:47:11 +08:00
@limuyan44 #8 密码输错返回 401 啊
nyse
2018-10-23 17:48:44 +08:00
没想到 V2 这么多人不支持 RESTful,一片都倒向第一种。
jx99
2018-10-23 17:48:59 +08:00
喜欢用 1,上级大佬让用 2
xiaolanger
2018-10-23 18:10:14 +08:00
业务代码要单独的,跟 HTTP 状态码不是一回事
NicholasYX
2018-10-23 18:34:35 +08:00
用一

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

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

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

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

© 2021 V2EX