当前位置:  开发笔记 > 前端 > 正文

HTTP状态的兼容性

如何解决《HTTP状态的兼容性》经验,为你挑选了1个好方法。

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

要创建一个新的博客文章,我必须做一个POST请求,如果一切顺利,将创建帖子,然后以与请求相对应的格式返回.

我在这个页面上从维基百科阅读了有关200 OK状态的信息

在POST请求中,响应将包含描述或包含操作结果的实体

好的.但后来有201 Created状态:

请求已完成,并导致创建新资源.

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

我没有从RFC获得这些信息,以为我没有完全阅读它.

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

编辑(新问题):如果操作正在编辑现有的博客帖子怎么办?我在URI上有一个PUT请求,这次我还要发回200 OK一个Location:标题呢?因为这个位置与PUT请求的URI完全相同,除了它应该是GET请求,这样可以吗?



1> AlBlue..:

所有2xx状态都是成功的.但是,在POST创建资源的情况下,您可能应该将201和一个位置一起返回到资源.从规格:

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

请求已完成,并导致创建新资源.新创建的资源可以由响应实体中返回的URI引用,其中由Location头字段给出的资源的最具体URI.响应应该包括一个实体,其中包含资源特征和位置的列表,用户或用户代理可以从中选择最合适的资源特征和位置.实体格式由Content-Type头字段中给出的媒体类型指定.原始服务器必须在返回201状态代码之前创建资源.如果无法立即执行操作,服务器应该响应202(已接受)响应.

换句话说,你应该返回:

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

然后,浏览器将知道这是要引用的资源,并且请求同时成功.您无需担心多状态.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有