HTTPQUERY
English

201 Created

用法

当请求创建了一个或多个新资源时,会返回 201 Created 状态码。它通常紧随 POST 或 PUT 请求之后返回。服务器会包含一个指向新创建资源的 Location 请求头。当 Location 请求头缺失时,被创建的资源位于原始请求所指定的路径上。

注意

通过 PUT 请求在特定 URI 上创建资源同样返回 201 Created。二者的区别在于:使用 PUT 时客户端直接指定目标 URI,而使用 POST 时由服务器决定 URI。

规范允许 201 响应包含消息体。REST 惯例是返回被创建资源的表示,包括由服务器分配的字段,如 id、时间戳和 URI。这样可以避免为获取新资源而再发起一次 GET 请求。Location 请求头指向新资源的 URI。

注意

201 表示资源已立即创建,并可在 Location URI 处获取。202 表示请求已被接受但处理尚未完成,这在异步工作流和排队作业中很常见。

SEO 影响

Google 会短暂等待 201 响应的内容,然后将收到的内容传入索引流程。索引并不保证一定发生。

示例

客户端向服务器上传 XML 数据,将 /incoming/xml 指定为目标路径。服务器响应确认数据已被接受,并创建了一个名为 article_1.xml 的文件。

请求

POST /incoming/xml HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 105

<?xml version="1.0"?>
<article>
  <title>Test XML article</title>
  <author>Anonymous</author>
</article>

响应

HTTP/1.1 201 Created
Location: /incoming/xml/article_1.xml
Content-Type: application/json
Content-Length: 18

{"success":"true"}

代码参考

.NET

HttpStatusCode.Created

Rust

http::StatusCode::CREATED

Rails

:created

Go

http.StatusCreated

Symfony

Response::HTTP_CREATED

Python3.5+

http.HTTPStatus.CREATED

Java

java.net.HttpURLConnection.HTTP_CREATED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_CREATED

Angular

@angular/common/http/HttpStatusCode.Created