En una API REST, los encabezados de HTTP describen metadatos sobre la petición y la respuesta: formato de datos, autenticación, negociación de contenido, cacheo y más.
Los headers (encabezados HTTP) son pares clave–valor que viajan junto con las peticiones y respuestas en HTTP. Sirven para transmitir información adicional sobre:
👉 Podés imaginarlos como el sobre de una carta: además del mensaje (body), necesitamos datos como remitente, destinatario, idioma, etc.
Ejemplo de petición HTTP con headers
GET /usuarios/1 HTTP/1.1
Host: api.ejemplo.com
Content-Type: application/json
Authorization: Bearer 12345
Accept: application/json
¿Qué indica?
El header Content-Type
especifica el formato de los datos que el cliente envía en el cuerpo (body) de la petición.
👉 Es obligatorio en peticiones POST
, PUT
y PATCH
cuando enviamos datos.
Ejemplos comunes
application/json
: el body está en formato JSON (lo más usado en APIs REST).application/xml
: el body está en XML.text/plain
: texto plano.multipart/form-data
: usado en formularios con archivos.Ejemplo con JSON (crear producto)
POST /productos HTTP/1.1
Host: api.tienda.com
Content-Type: application/json
{
"nombre": "Notebook",
"precio": 1500.00
}
👉 El servidor sabe que los datos vienen en formato JSON gracias a Content-Type
.
¿Qué indica?
El header Accept
especifica el formato de la respuesta que el cliente espera recibir del servidor.
Ejemplos
Accept: application/json
: quiero la respuesta en JSON.Accept: application/xml
: quiero la respuesta en XML.Ejemplo
GET /productos/15 HTTP/1.1
Host: api.tienda.com
Accept: application/json
Respuesta en JSON
{
"id": 15,
"nombre": "Notebook",
"precio": 1500.00
}
👉 Si el cliente hubiera enviado Accept: application/xml
, el servidor (si soporta XML) podría responder en ese formato.
¿Qué indica?
El header Authorization
se usa para enviar credenciales de acceso. Es la forma estándar de autenticar y autorizar al cliente en una API.
Modos comunes de uso
Basic Auth — se envía usuario y contraseña codificados en Base64 (RFC 7617).
Authorization: Basic dXN1YXJpbzpwYXNzd29yZA==
Bearer Token (el más usado en APIs REST modernas) — se envía un token (por ejemplo, JWT) (RFC 6750).
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...
API Key — una clave secreta única para el cliente.
Authorization: ApiKey 12345abcdef
Ejemplo completo con Bearer
GET /usuarios/1 HTTP/1.1
Host: api.tienda.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...
Accept: application/json
👉 Sin este header, el servidor podría responder con 401 Unauthorized.
Content-Type: application/json
.Accept: application/json
.Petición POST con JSON y token:
curl -X POST https://api.tienda.com/productos ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer 12345" ^
-H "Accept: application/json" ^
-d "{ \"nombre\": \"Tablet\", \"precio\": 1200.00 }"
Content-Type
en peticiones con body (POST
, PUT
, PATCH
).Accept
para indicar explícitamente el formato deseado (aunque sea JSON por defecto).Authorization
.Accept: application/json
.Los headers HTTP son piezas clave de comunicación entre cliente y servidor.
👉 En resumen: los headers son los metadatos que hacen que la comunicación REST sea segura, clara y eficiente.