如题,方案一:所有就是只以HTTP状态码来表示状态,200时候返回内容就是数据,最多有个分页(其实分页我都不想放响应内容里,我觉得像github那样放到header更整洁)。
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 1,
...
}
]
}
只有在抛出Exception异常(即使业务逻辑上有问题,也抛出APIException异常)才返回:
HTTP/1.1 405 Method Not Allowed
Content-Type: application/json
{"status_code": 405, "message": "Method 'DELETE' not allowed."}
方案二:所有接口都返回200(我觉得有点不切实际,比如403,500等,再加上很多客户端http库都会对这些抛异常的),然后响应里包含:
{
"status_code: 1000
"message": "xxxxx"
"result": {
"id": 1
...
}
}
现在貌似很多客户端开发都希望是方案二,因为这样他们逻辑会简单些(200以外全去捕获异常,200时再看status_code做不同处理),但是作为服务端更倾向于方案一,因为大多框架和各家提供的API都是这么干的,其实也很简单(先看状态码,然后直接根据状态码决定后续动作)。
在两个方案中纠结,来请大家给点建议哈~
以前都是在SO上发帖,第一次在v站发帖,如有没说清楚或者违反社区原则的地方,请大家不吝指出。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.