Envío y recepción de datos en formato JSON

1 JSON como estándar en APIs REST

En la mayoría de las APIs modernas, el formato de intercambio de datos por defecto es JSON.

  • Cuando el cliente envía datos al servidor (crear/actualizar recursos), usa JSON en el body.
  • Cuando el servidor responde, devuelve datos en JSON.

👉 Esto garantiza interoperabilidad: cualquier lenguaje de programación puede generar o leer JSON fácilmente.

2 Envío de datos en formato JSON (Request)

Cuando enviamos datos a una API (por ejemplo en POST, PUT o PATCH), los datos van en el cuerpo de la petición (body) en formato JSON.

Reglas básicas

  • Incluir el header Content-Type: application/json para indicar que estamos enviando JSON. Ver especificación de HTTP.
  • Incluir los datos en el body de la petición, bien formados como objeto JSON.

Ejemplo 1 — Crear un usuario (POST)

Petición HTTP

POST /usuarios HTTP/1.1
Host: api.tienda.com
Content-Type: application/json
Accept: application/json

{
  "nombre": "Carlos",
  "email": "carlos@ejemplo.com",
  "edad": 28
}

Respuesta

201 Created
{
  "id": 101,
  "nombre": "Carlos",
  "email": "carlos@ejemplo.com",
  "edad": 28
}

👉 El servidor devuelve un nuevo objeto con id generado automáticamente.

Ejemplo 2 — Actualizar un producto (PUT)

PUT /productos/10 HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "nombre": "Notebook Gamer",
  "precio": 2500.00,
  "stock": true
}

👉 El servidor reemplaza todos los campos del producto con id = 10.

Ejemplo 3 — Actualización parcial (PATCH)

PATCH /productos/10 HTTP/1.1
Content-Type: application/json
Accept: application/json

{
  "precio": 2200.00
}

👉 Solo se modifica el precio; el resto de atributos se mantiene igual.

3 Recepción de datos en formato JSON (Response)

Cuando una API REST responde, casi siempre lo hace en JSON.

Ejemplo 1 — Obtener un producto (GET)

GET /productos/10 HTTP/1.1
Accept: application/json

Respuesta

{
  "id": 10,
  "nombre": "Notebook Gamer",
  "precio": 2200.00,
  "stock": true
}

👉 El cliente ahora puede usar estos datos en su aplicación.

Ejemplo 2 — Lista de recursos

GET /usuarios HTTP/1.1
Accept: application/json

Respuesta

[
  { "id": 1, "nombre": "Ana",  "email": "ana@ejemplo.com" },
  { "id": 2, "nombre": "Luis", "email": "luis@ejemplo.com" }
]

👉 El servidor devuelve un arreglo de objetos JSON.

4 Ejemplos en herramientas

A) Postman

  • Seleccionás el método POST o PUT.
  • En la pestaña Body → opción raw → seleccionás JSON.
  • Pegás el JSON en el área de texto.

Ejemplo

{
  "titulo": "Nuevo curso",
  "precio": 1200
}

En Headers, Postman agrega automáticamente: Content-Type: application/json.

B) cURL

Crear un recurso con POST

curl -X POST https://api.tienda.com/productos ^
  -H "Content-Type: application/json" ^
  -d "{ \"nombre\": \"Tablet\", \"precio\": 900.50 }"

Obtener un recurso con GET

curl -X GET https://api.tienda.com/productos/1 ^
  -H "Accept: application/json"

5 Errores comunes al enviar/recibir JSON

Olvidar el Content-Type
El servidor no sabe que los datos son JSON.

Formato inválido
Comas de más, comillas simples en vez de dobles, etc.

Ejemplo incorrecto

{ 'nombre': 'Ana' }

Ejemplo correcto

{ "nombre": "Ana" }

Confundir Path Parameters con JSON
Incorrecto: enviar id en el body cuando debería estar en la ruta (/usuarios/5).

Falta de Accept en la petición
El cliente pide JSON pero no lo indica, y el servidor puede responder en otro formato.

6 Buenas prácticas

  • Siempre incluir Content-Type: application/json cuando enviamos datos en el body.
  • Siempre incluir Accept: application/json para asegurarnos de recibir datos en JSON.
  • Validar el JSON antes de enviarlo (se pueden usar validadores en línea como jsonlint.com).
  • Responder con mensajes JSON estandarizados en caso de error:
{ "error": "El campo 'email' es obligatorio" }
  • Usar estructuras claras y consistentes en todas las respuestas.

7 Conclusión del capítulo

El JSON es el formato universal para enviar y recibir datos en APIs REST.

  • Enviar datos: incluir Content-Type: application/json y un body bien formado.
  • Recibir datos: incluir Accept: application/json para obtener la respuesta en JSON.

El correcto manejo de JSON garantiza que la API sea comprensible, segura y confiable.

👉 En resumen: JSON es el idioma que habla REST.