circle-info
Desarrollo en curso, en breve se publicarán el resto de temas.

Capítulo 8: Peticiones POST/PUT/DELETE

Hasta ahora solo hemos hecho peticiones GET (obtener datos). Ahora aprenderemos a enviar datos al servidor usando POST, PUT y DELETE para operaciones CRUD completas.

8.1. Configurar el objeto options en fetch

Para cambiar el método HTTP y enviar datos, usamos el segundo parámetro de fetch():

// GET (por defecto, sin opciones)
fetch("/api/usuarios");

// POST (con opciones)
fetch("/api/usuarios", {
    method: "POST",
    headers: {
        "Content-Type": "application/json"
    },
    body: JSON.stringify({ nombre: "Juan", email: "[email protected]" })
});

Objeto options completo:

const options = {
    method: "POST",              // GET, POST, PUT, DELETE, PATCH, etc.
    headers: {                   // Headers HTTP
        "Content-Type": "application/json",
        "Authorization": "Bearer TOKEN"
    },
    body: JSON.stringify(datos), // Para POST/PUT/DELETE
    mode: "cors",                // cors, no-cors, same-origin
    credentials: "include",      // Incluir cookies
    timeout: 5000                // Timeout en ms (algunos navegadores)
};

fetch("/api/endpoint", options);

8.2. Body: JSON.stringify y Content-Type

El body es el contenido que enviamos al servidor. Debe ser una cadena, no un objeto.

Content-Type (tipo de contenido):


8.3. Método POST: Enviar datos

POST se usa para crear nuevos recursos.

Ejemplo con JSONPlaceholder:


8.4. Métodos PUT y DELETE: Actualizar y eliminar

PUT: Actualizar un recurso existente

DELETE: Eliminar un recurso

PATCH: Actualizar parcialmente


8.5. Ejemplo completo: CRUD con una API

Aquí está un ejemplo completo de operaciones CRUD:


8.6. Códigos de estado HTTP comunes

Al trabajar con POST/PUT/DELETE, es importante entender los códigos:

Código
Significado
Acción

200

OK

Operación exitosa (generalmente GET)

201

Created

Recurso creado (POST)

204

No Content

Éxito pero sin contenido (DELETE, PUT)

400

Bad Request

Datos inválidos

401

Unauthorized

No autenticado

403

Forbidden

No autorizado

404

Not Found

Recurso no existe

409

Conflict

Conflicto (duplicado, etc.)

500

Server Error

Error del servidor


Resumen del Capítulo

POST, PUT y DELETE permiten manipular datos en el servidor. Siempre recuerda usar JSON.stringify() para el body, establecer el Content-Type correcto, y verificar los códigos de estado HTTP para manejo de errores apropiado.

💡 Conceptos Clave:

  • method: GET, POST, PUT, DELETE, PATCH

  • headers: Content-Type y autenticación

  • body: Datos a enviar (como string JSON)

  • JSON.stringify(): Convertir objeto a string

  • POST: Crear recursos (status 201)

  • PUT: Actualizar completamente

  • PATCH: Actualizar parcialmente

  • DELETE: Eliminar recursos

  • Códigos HTTP: Interpretación de respuestas

🤔 Preguntas de Reflexión:

  1. ¿Cuál es la diferencia entre PUT y PATCH?

  2. ¿Por qué necesitas usar JSON.stringify() en el body?

  3. ¿Qué es Content-Type y por qué es importante?

  4. ¿Cuál es el código HTTP esperado para POST exitoso?

  5. ¿Cómo manejarías un error 409 (Conflict)?

  6. Crea una función CRUD completa para un recurso.


Última actualización

¿Te fue útil?