RESTful API POST / DELETE应该在正文中返回什么?

时间:2011-10-31 14:57:45

标签: api rest

要通过RESTful API关注和取消关注,我有

  • POST / person / bob / follow
  • DELETE / person / bob / follow

这些应该在体内返回什么?

  1. 您关注的每个人的集合
  2. 您刚关注/取消关注的人
  3. 状态如{status:“ok”}
  4. 没有

3 个答案:

答案 0 :(得分:9)

如果您使用HTTP服务器状态回复错误,则状态代码不会说任何内容。如果在没有用户Bob的情况下回复404 Not Found,或者如果数据库损坏则回复500 Internal Server Error,那么您将获得的唯一成功响应就是OK。用户不必检查状态代码,只需检查HTTP状态代码即可。

我建议您什么都不返回,而且它是一个成功的响应(即200 OK或204 No Content)这表明操作成功。

答案 1 :(得分:6)

这一切都取决于您的app / API设计以及您将与客户/呼叫者定义的合同。但通常情况下,在所有情况下,您都应返回状态代码,以使您的客户了解结果。

赞:respond(ResponseCode::OK, ...)

对于POST:我会返回'​​bob'对象,其中包含所有关注者+状态码
对于DELETE:我只返回状态代码。

答案 2 :(得分:3)

通常,对于API,我是道歉者使用HTTP状态代码而不是始终确定具有代码定义状态。 这意味着您可以按照现有的标准获得答案,任何获得错误代码的人都会大致知道发生了什么/他们必须做什么。 请查看Wiki文章http status codes以获取可用的参考手册。

此外,与错误代码一起使用,并且因为我们正在谈论的API,有一个关于错误的更具描述性的消息是有用的。像错误一样有意义:" Auth令牌丢失"或者你可能提出的任何标准。

在创建资源时,我通常会回复201(已创建)和刚刚创建的资源。请注意,您可能希望从资源中排除某些属性(例如,您正在创建用户,您不应该返回敏感信息,例如加密密码)

关于删除资源,通常以200(Ok)或202(已接受)返回,并且没有额外信息。

尽管如此,正如@yek所提到的,它在很大程度上取决于对API消费者的承诺。最重要的是你要体面地记录API并解释应该是什么样的期望。