Códigos de estado o HTTP response status codes

Clase 13 de 27Curso de Backend con Node.js: API REST con Express.js

Resumen

¿Qué son y para qué sirven los status codes en REST?

Los status codes en REST son una parte esencial de la comunicación entre clientes y servidores. Estos códigos numéricos nos indican el estado de una solicitud HTTP. Al observar un status code, podemos saber si una operación fue exitosa, hubo errores o se necesita tomar alguna acción adicional.

Estos códigos se dividen en rangos numéricos que identifican diferentes tipos de respuestas:

  • 100 a 199: Respuestas informativas.
  • 200 a 299: Indican que la operación fue exitosa. Por ejemplo, el código 200 se utiliza para confirmar que todo salió bien, mientras que el 201 indica que un recurso se creó exitosamente.
  • 300 a 399: Redirecciones.
  • 400 a 499: Errores del cliente, como el famoso 404, que indica que un recurso no fue encontrado.
  • 500 a 599: Errores del servidor, como el 500, que denota que algo falló internamente en el servidor.

¿Cómo implementar status codes en el código?

Implementar los status codes correctamente no solo ayuda a mantener la integridad de las aplicaciones REST, sino que también mejora la experiencia del cliente. En el siguiente ejemplo, aprenderás cómo puedes implementar diferentes status codes en tu aplicación.

Cambiando el código para responder con el status 201

Cuando en una API REST se realizan operaciones de creación, es adecuado utilizar el status code 201. Este código confirma a los clientes que el recurso se creó exitosamente.

// Enviamos status 201 en caso de creación exitosa
app.post('/create', (req, res) => {
  // Lógica para crear el recurso
  res.status(201).json({ message: 'Recurso creado exitosamente' });
});

Gestión dinámica de errores con el status 404

En situaciones donde un recurso no puede ser encontrado, se debe informar al cliente enviando un status code 404. Este es un ejemplo de cómo manejarlo dinámicamente:

// Verificar si el ID es 999 y retornar 404
app.get('/product/:id', (req, res) => {
  const productId = req.params.id;

  if (productId === '999') {
    // Envía un 404 not found
    res.status(404).json({ error: 'Producto no encontrado' });
  } else {
    // Manejamos la respuesta normal con un 200
    res.status(200).json({ id: productId, name: 'Nombre de producto' });
  }
});

¿Cómo afectan los status codes a las solicitudes GET?

Cuando manejas solicitudes GET, es fundamental recordar que los parámetros recibidos siempre serán procesados como strings, sin importar si son números. Esto podría influir en la lógica de tu aplicación y en cómo implementas las comprobaciones de status codes.

Ahora que has aprendido a utilizar e implementar status codes, puedes explorar recursos como la documentación de Mozilla Developer Network (MDN) o la curiosa página de los gatos que ilustra los status codes de manera divertida con imágenes felinas. Estas herramientas te ayudarán a elegir el status code apropiado para cada situación.

Déjame en los comentarios cuáles de estos status codes no conocías y cómo piensas aplicarlos en tu proyecto. ¡Continúa explorando el fascinante mundo de las APIs REST!