从db获取部分数据的API状态响应?

时间:2016-04-15 05:00:43

标签: api-design

如果客户请求特定范围的条目,那么适当的状态响应是什么。

['car1', 'car2', car4']

数据库只返回了部分集合,因此客户端只能获得。

{{1}}

我在202和206之间犹豫不决。但处理这种情况会有多少或多或少的标准方式?

2 个答案:

答案 0 :(得分:1)

我认为你应该选择206.

202代表

  

其目的是允许服务器接受对某些其他进程的请求(可能是每天只运行一次的面向批处理的进程),而不要求用户代理与服务器的连接一直持续到进程完成为止。

时使用

206

  

服务器已完成资源的部分GET请求。

你的情况如何。

阅读规格:https://tools.ietf.org/html/rfc7233#section-4.1

答案 1 :(得分:1)

202代码适用于范围提取;浏览器要求服务器获取响应的字节范围。

您可以考虑(自定义)300级代码:

  

10.3重定向3xx

     

此类状态代码表示用户代理需要采取进一步操作才能完成请求。

不幸的是,与标准的200级代码一样,它们都不能满足部分响应列表的情况。

202 代码在概念上用于表示服务器已接受您发送的内容,现在将离开并处理(异步):

  

请求已被接受处理,但处理尚未完成。没有从异步操作中重新发送状态代码的工具。

我倾向于远离200代码,因为浏览器要求的操作没有完成。 300代码更适合告诉发出完全合理请求的客户,服务器无法完成所有操作 - 浏览器必须做更多工作才能获得完整的结果。