RESTful方式来处理丢失的数据

时间:2010-08-11 19:53:26

标签: rest

我正在开发一个RESTful API。其中一个URL允许调用者通过id请求特定人员的记录。

该id的记录返回的常规值是什么?服务器应该发回一个空对象,还是404或其他东西?

感谢。

3 个答案:

答案 0 :(得分:2)

根据CodeIgniter Rest Server使用的惯例,在这些情况下,我通常会从RESTful API返回404错误。

这在大多数情况下都很好,并且是最“正确”和“纯粹”的解决方案。然而,404错误可能使得在客户端处理那些“丢失”的情况变得有点困难,因为你可能需要一个单独的错误处理程序而不是什么都不做因为你回来了一个空对象。

我建议权衡这两种方法的专业和概念,并实施对您最有意义的方法。

答案 1 :(得分:1)

404,或者说410(已经过去)如果之前有(但在这种情况下404也没有错)。

与REST一样,最好发送一个表示(即使使用4xx代码)来告诉客户端资源不存在,并告诉它可以采取哪些可能的操作。

答案 2 :(得分:0)

除了考虑404之外,我还会考虑返回“空”的一些表示的可能性:考虑谷歌搜索单词klinjeraliknoplidocus。在撰写本文时,它返回200 OK,“没有匹配”,建议没有如何前进。它不会返回404,因为URI http://www.google.com/search?q=klinjeraliknoplidocus实际上标识了某些内容,即“Google已知的与 klinjeraliknoplidocus ”相关的所有文档。很快,这个页面就会出现在那里。

所以:

  • 如果您将查找功能定义为返回零个或多个具有此ID的项目,那么200并且空响应有意义。
  • 如果您将查找功能定义为仅返回一个项目,则404(或410)是有意义的。