Cómo devolver códigos de estado en Express

Cómo devolver códigos de estado en Express

Para cualquier desarrollador que trabaje con API y Express, es importante comprender cómo devolver los códigos de estado HTTP correctos. Los códigos de estado HTTP son la forma en que el servidor comunica el estado de la solicitud de un cliente, ya sea que haya tenido éxito, haya causado un error en el servidor o cualquier otra cosa.

Muchos desarrolladores experimentados probablemente se han encontrado en una situación en la que usan una API y la solicitud falla, pero no saben por qué. Si la API devolviera el código de estado apropiado, junto con un mensaje breve, podría ahorrarles a los desarrolladores horas de depuración.

En este breve artículo, profundizaremos en la importancia de estos códigos de estado y cómo puede usarlos en Express.js, el marco web rápido, sin opiniones y minimalista para Node.js.

Comencemos con la forma más fácil de devolver un código de estado en Express.js. Esto se hace usando el res.status() función, donde res es el objeto de respuesta pasado a la devolución de llamada de su controlador de ruta.

app.get('/api/users', (req, res) => {
    res.status(200).json({ message: "Success!" });
});

En el ejemplo anterior, estamos enviando un código de estado de 200, lo que indica que la solicitud fue exitosa.

Sin embargo, Express.js proporciona una forma más semántica de enviar muchos códigos de estado HTTP comunes. Por ejemplo, puedes usar res.sendStatus() En vez de res.status().send() para enviar códigos de estado con un mensaje corto.

app.get('/api/users', (req, res) => {
    res.sendStatus(200); // equivalent to res.status(200).send('OK')
});

Nota: Recuerde que los códigos de estado HTTP no están reservados para solicitudes exitosas. Si devuelve un estado de error, como 400 para "solicitud incorrecta" o 404 para "no encontrado", es útil proporcionar más información sobre lo que salió mal.

Cuando tratamos con errores, podemos usar el res.status() método en colaboración con .json() para proporcionar un mensaje de error detallado.

app.get('/api/users', (req, res) => {
    res.status(404).json({ error: "User not found!" });
});

De esta forma, el cliente recibirá tanto el código de estado del error como un mensaje detallando el problema.

Pero, ¿cómo manejamos los errores inesperados que ocurren al ejecutar nuestro código? Express.js ofrece funciones de manejo de errores de middleware para esto.

Las funciones de middleware son funciones que tienen acceso al objeto de solicitud (req), el objeto de respuesta (res), y el next función de middleware en el ciclo de solicitud-respuesta de la aplicación. Pueden ejecutar cualquier código, realizar cambios en los objetos de solicitud y respuesta, finalizar el ciclo de solicitud-respuesta y llamar a la siguiente función de middleware en la pila.

Aquí hay un ejemplo básico de una función de manejo de errores de middleware:

app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('Something broke!');
});

En este ejemplo, si se genera un error en cualquier parte de su aplicación, esta función de middleware lo detectará. La función registra el seguimiento de la pila de errores y envía un código de estado 500 al cliente, lo que indica un error interno del servidor.

La devolución de códigos de estado HTTP en Express.js se puede hacer de varias maneras. Ya sea usando res.status(), res.sendStatus(), o en combinación con funciones de manejo de errores de middleware, cada método desempeña un papel en la comunicación del estado de las solicitudes de los clientes. Comprender estos diferentes métodos nos ayudará a escribir un código más robusto, pero también API fáciles de usar.

Al tomarse el tiempo para devolver los códigos de estado apropiados, se asegura de que su aplicación se comunique de manera efectiva con los clientes, ya sean navegadores, aplicaciones de terceros u otros servidores.

Si quieres conocer otros artículos parecidos a Cómo devolver códigos de estado en Express puedes visitar la categoría Código.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir

Esta página web utiliza cookies para analizar de forma anónima y estadística el uso que haces de la web, mejorar los contenidos y tu experiencia de navegación. Para más información accede a la Política de Cookies . Ver mas