RESTful API 的错误返回有什么最佳实践么?

2016-03-22 16:05:51 +08:00
 9
用 http status code 来表示错误类型这个是没问题的,主要是纠结于这个之外的错误信息怎么处理展示,求指导

4693 次点击
所在节点    问与答
14 条回复
v1024
2016-03-22 16:12:49 +08:00
code + message , code 用于程序判断, message 用于显示输出。 code 是 int , message 是任意内容的 string 。
learnshare
2016-03-22 16:32:32 +08:00
遵循 HTTP code 就是比较好的实践方式。
tidezyc
2016-03-22 16:41:44 +08:00
http status code 应该保持都是 200 不变,消息里加上 code
9
2016-03-22 17:22:47 +08:00
@v1024 如果错误比较复杂, message 怕 hole 不住,或许 docker 的这种比较好?

{
"errors:" [
{
"code": <error code>,
"message": "<error message>",
"detail": ...
},
...
]
}
9
2016-03-22 17:24:52 +08:00
@learnshare http status code 这个没什么异议,我纠结的是错误信息的展示
9
2016-03-22 17:25:17 +08:00
@v1024 笔误, hole -> hold
9
2016-03-22 17:25:39 +08:00
@tidezyc 错误消息呢?
learnshare
2016-03-22 18:00:51 +08:00
@9 错误信息建议是可读懂的内容,在国内就直接输出中文好了。因为这部分是给 API 使用者或者用户看的,越清晰易懂越好。
hbkdsm
2016-03-22 18:12:24 +08:00
可以参考 JSON API 规范
cxbig
2016-03-22 18:19:45 +08:00
基本网络错误用对应的 response code
app 相关操作错误用 200 返回,基本 field 可以包括
- exception // 错误类
- code //自编错误代码
- message // 用户可见错误信息
9
2016-03-22 19:27:47 +08:00
@hbkdsm 非常感谢,相当好的参考,可惜没有评论置顶功能

发现上面提到的 docker registry 的返回结构已经跟这个规范非常接近
9
2016-03-22 19:30:06 +08:00
@learnshare 你说的我明白,我想知道的是错误的具体的展示规范,不过也很感谢你的回答!
learnshare
2016-03-22 20:17:39 +08:00
jade88
2016-03-22 20:46:23 +08:00
为什么错误不用 4xx 返回呢

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

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

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

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

© 2021 V2EX