204 No Content
Uso
El código de estado 204 No Content se devuelve como respuesta a una operación POST, PUT o DELETE en la que no se espera ningún cuerpo de mensaje. Algunos servidores devuelven en su lugar un 200 con un cuerpo vacío y un Content-Length de 0.
Un caso de uso práctico es el resultado del envío de un formulario cuando el usuario pulsa un botón “Save”. El servidor confirma los cambios y confía en que el cliente informe al usuario del éxito de la operación.
El servidor no debe incluir ningún cuerpo de mensaje en una respuesta 204. Cabeceras como Cache-Control y ETag se siguen enviando y se aplican al documento identificado por la solicitud.
El estado relacionado 205 Reset Content tampoco devuelve cuerpo, pero además indica al cliente que reinicie la vista del documento (por ejemplo, vaciar un formulario tras el envío). Un GET condicional devuelve un 304 para señalar que no es necesario volver a obtener el recurso.
Nota
Que DELETE devuelva 204 es el patrón más habitual para la eliminación sencilla de recursos cuando no se necesita cuerpo de respuesta. Devuelva 200 en su lugar cuando la respuesta incluya detalles de confirmación o la representación del recurso eliminado. Que PUT devuelva 204 es frecuente cuando la actualización tiene éxito y el cliente no necesita que se le devuelva la representación actualizada. 204 significa “éxito, nada que mostrar”, mientras que 404 significa “recurso no encontrado”. La consulta de una colección vacía devuelve 200 con un array vacío, no 204.
Impacto en SEO
Google no puede procesar una respuesta 204 porque no recibe contenido alguno. Una URL que devuelve 204 de forma sistemática no aparecerá en los resultados de búsqueda.
Ejemplo
El cliente envía datos XML al servidor para definir un trabajo. El servidor responde confirmando que los datos se aceptaron y que el trabajo se completó. No es necesario devolver ningún contenido, por lo que el código de estado 204 No Content resulta apropiado.
Solicitud
POST /job HTTP/1.1
Host: example.com
Content-Type: application/xml
Content-Length: 68
<?xml version="1.0"?>
<job>
<id>125</id>
<task>G01</task>
</job>
Respuesta
HTTP/1.1 204 No Content
Referencias de código
.NET
HttpStatusCode.NoContent
Rust
http::StatusCode::NO_CONTENT
Rails
:no_content
Go
http.StatusNoContent
Symfony
Response::HTTP_NO_CONTENT
Python3.5+
http.HTTPStatus.NO_CONTENT
Java
java.net.HttpURLConnection.HTTP_NO_CONTENT
Apache HttpComponents Core
org.apache.hc.core5.http.HttpStatus.SC_NO_CONTENT
Angular
@angular/common/http/HttpStatusCode.NoContent