gpt4 book ai didi

rest - HTTP状态的兼容性

转载 作者:行者123 更新时间:2023-12-02 09:00:49 25 4
gpt4 key购买 nike

我目前正在实现一个 RESTful API(没什么大不了的,只是为了好玩而开发的博客引擎),我对 HTTP 状态兼容性有一些疑问。

要创建新的博客文章,我必须执行 POST 请求,如果一切顺利,将创建该文章,然后以与请求对应的格式返回。

我阅读了this page来自维基百科关于 200 OK 的状态

In a POST request the response will contain an entity describing or containing the result of the action

好的。但是接下来是 201 Created 状态:

The request has been fulfilled and resulted in a new resource being created.

所以我的问题是:当 POST 请求成功并创建新博客帖子时,我是否会发回这两个 http 状态代码或一次只允许发送一个?

我没有从 RFC 获得此信息,以为我没有完全阅读它。

我在想一次只允许一种 HTTP 状态,但我应该使用哪一种呢?

EDIT(新问题):如果操作是编辑现有博客文章怎么办?我有一个关于 URI 的 PUT 请求,这次我必须发回 200 OK,然后还有一个 Location: header ?因为这个位置将与 PUT 请求的 URI 完全相同,只是它应该是 GET 请求,这样可以吗?

最佳答案

所有 2xx 状态都是成功的。但是,在使用 POST 创建资源的情况下,您可能应该返回 201 以及资源的位置。来自规范:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.2.2

The request has been fulfilled and resulted in a new resource being created. The newly created resource can be referenced by the URI(s) returned in the entity of the response, with the most specific URI for the resource given by a Location header field. The response SHOULD include an entity containing a list of resource characteristics and location(s) from which the user or user agent can choose the one most appropriate. The entity format is specified by the media type given in the Content-Type header field. The origin server MUST create the resource before returning the 201 status code. If the action cannot be carried out immediately, the server SHOULD respond with 202 (Accepted) response instead.

换句话说,你应该返回:

201 Created
Location: http://www.example.com/path/to/resource

然后浏览器会知道这是要引用的资源,同时请求已经成功。您无需担心多状态。

关于rest - HTTP状态的兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1384298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com