7

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

  1. 格式不正确的查询

  2. 格式正确的查询是指不存在的资源

  3. 资源已成功删除

  4. 资源编辑成功

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

4

5 回答 5

15

对于#1,403 表明您的应用程序理解了请求,但不会满足它(即当前用户由于某种原因无权执行此操作)。我认为 400 bad request 在这种情况下可能更有意义。

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

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

RFC 2616以相当容易理解的术语很好地解释了每个响应代码的含义。

于 2009-05-11T08:54:12.340 回答
4
  1. 400
  2. 404
  3. 200
  4. 200
  5. 201 - 资源创建成功
于 2009-05-11T08:45:40.123 回答
2

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

2)。404 - 410 表示资源确实存在但已被故意移动

3)。和 4)。如果在您发送响应时操作已成功发生,则为 200,如果操作未决,则为 202。在实践中,202 可能用于删除操作(它们可能会受到审查),但您可能希望也可能不希望立即返回 200,因此它看起来实际上已被用户删除。这是一个设计问题恕我直言。

于 2009-05-11T08:53:13.603 回答
1

获取 Richardson 和 Ruby 的书- 它有一个有用的附录,关于您的问题,无论哪种方式都需要阅读

于 2009-05-11T09:11:09.457 回答
-1

为什么不使用标准的http 响应代码。您将免费获得 http 的所有优化(例如 303、304)/基础设施。

于 2009-05-11T08:50:15.777 回答