Encabezados HTTP (Headers: Content-Type, Authorization, Accept)

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.

1 ¿Qué son los headers en HTTP?

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:

  • El cliente (navegador, app, script).
  • El servidor (API).
  • El contenido que se envía o recibe.

👉 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

2 Header: Content-Type

¿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.

3 Header: Accept

¿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.

4 Header: Authorization

¿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.

5 Ejemplos en herramientas

En Postman

  • Content-Type: pestaña Headers, agregar Content-Type: application/json.
  • Accept: agregar Accept: application/json.
  • Authorization: pestaña Authorization, seleccionar tipo (Bearer Token, Basic Auth, API Key) y completar el campo.

En cURL

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 }"

6 Otros headers comunes en APIs REST

  • Cache-Control: define si la respuesta puede almacenarse en caché.
  • User-Agent: identifica al cliente (ej. navegador o aplicación).
  • Retry-After: indica al cliente cuánto esperar antes de volver a hacer una petición.
  • Content-Length: tamaño del body en bytes.

7 Buenas prácticas con headers

  • Incluir Content-Type en peticiones con body (POST, PUT, PATCH).
  • Usar Accept para indicar explícitamente el formato deseado (aunque sea JSON por defecto).
  • Nunca enviar credenciales en la URL; usar siempre el header Authorization.
  • Enviar solo los headers necesarios para evitar sobrecarga en la comunicación.
  • Mantener consistencia en las APIs: todas deberían soportar Accept: application/json.

8 Conclusión del capítulo

Los headers HTTP son piezas clave de comunicación entre cliente y servidor.

  • Content-Type indica el formato de los datos enviados.
  • Accept indica el formato de los datos esperados como respuesta.
  • Authorization gestiona el acceso seguro a los recursos de la API.

👉 En resumen: los headers son los metadatos que hacen que la comunicación REST sea segura, clara y eficiente.