201 Created
Uso
El código de estado 201 Created se devuelve cuando una solicitud crea uno o varios recursos nuevos. Suele venir después de una solicitud POST o PUT. El servidor incluye una cabecera Location que apunta al recurso recién creado. Cuando la cabecera Location no está presente, el recurso creado reside en la ruta indicada en la solicitud original.
Nota
Una solicitud PUT que crea un recurso en un URI concreto también devuelve 201 Created. La diferencia está en que con PUT el cliente indica directamente el URI de destino, mientras que con POST es el servidor quien determina el URI.
La especificación permite un cuerpo en una respuesta 201. La convención REST es devolver la representación del recurso creado, incluidos los campos asignados por el servidor, como id, marcas de tiempo y URI. Así se evita una solicitud GET posterior para recuperar el nuevo recurso. La cabecera Location apunta al URI del nuevo recurso.
Nota
201 significa que el recurso se ha creado de inmediato y está disponible en el URI de Location. 202 significa que la solicitud se ha aceptado, pero el procesamiento aún no ha terminado, algo habitual en los flujos de trabajo asíncronos y en los trabajos en cola.
Impacto en SEO
Google espera brevemente el contenido de las respuestas 201 y después pasa el contenido recibido al proceso de indexación. La indexación no está garantizada.
Ejemplo
El cliente sube datos XML al servidor e indica /incoming/xml como ruta de destino. El servidor responde confirmando que los datos se aceptaron y que se creó un archivo llamado article_1.xml.
Solicitud
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>
Respuesta
HTTP/1.1 201 Created
Location: /incoming/xml/article_1.xml
Content-Type: application/json
Content-Length: 18
{"success":"true"}
Referencias de código
.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