RESTful HTTP响应代码

时间:2009-05-11 08:41:21

标签: http rest response

我正在开发一个简单的RESTful API,并完全爱上它的简约性。但我不确定各种情况下的正确HTTP响应代码:

  1. 查询格式错误

  2. 正确形成的查询是指不存在的资源

  3. 资源已成功删除

  4. 资源已成功修改

  5. 我目前认为1会403 Forbidden; 2将是410 Gone; 3和4将是202 Accepted。他们听起来不错吗?

5 个答案:

答案 0 :(得分:15)

对于#1,403建议您的应用程序理解该请求,但不会实现它(即当前用户由于某种原因没有权限这样做)。在这种情况下,我认为400个错误请求可能更有意义。

对于#2 - 我认为404会更有意义,即找不到资源,除非 资源确实存在于某个时刻,然后被删除,在这种情况下410将是公平的 - 但没有多少客户知道如何处理410.

对于#3&如果您成功处理了删除,则为#4 - 200;如果删除排队,则为202,并且将在以后“带外”处理。

RFC 2616为每个响应代码在可理解的术语中提供了很好的解释。

答案 1 :(得分:4)

  1. 400
  2. 404
  3. 200
  4. 200
  5. 201 - 资源已成功创建

答案 2 :(得分:2)

1)。 400 - 标准错误请求,403表示请求格式正确但您不允许访问它

2)。 404 - a 410暗示资源确实存在但是故意移动

3)。和4)。如果在您发送响应时成功发生了操作,则为200;如果操作处于待处理状态,则为202。在实践中,202可能用于删除操作(他们可能需要审查),但您可能或可能不想立即返回200,因此它实际上被删除给用户。这是一个设计问题imho。

答案 3 :(得分:1)

Get the Richardson & Ruby book - 它在您的问题上有一个有用的附录,并且必须以任何方式阅读

答案 4 :(得分:-1)

为什么不使用标准http response codes。您将获得免费为http设置的所有优化(例如,303,304)/基础设施。