Obtener el estado 400 como un error en lugar de una respuesta json

Tengo un front-end conectado al back-end, usando solicitudes http. Estoy experimentando esto en el que si devuelvo res.status(200) obtengo una respuesta que puedo enviar con esa respuesta en un mensaje. Pero cuando envío res.status(400). Recibo un error rojo en la consola en lugar de una respuesta analizable.

app.post('/new', (req, res) => {
    const { fullname, phone, country, img } = req.body
    return res.status(200).json({
        title: 'Ok, we got you!'
    })
})

// If I'm changing that status to 400 I get that red error on console and I cannot parse from it anything (anything atleast that I want)
Answer

Sí, y ese es el comportamiento correcto con las solicitudes HTTP. HTTP 400 Bad Requestindica un error en lugar de una respuesta exitosa de su servidor web. Por lo tanto, debe detectar el error arrojado por el servidor con una .catch()cláusula o un try/catchbloque para acceder a los datos devueltos en su lado del cliente. Su código de servidor está absolutamente bien. Simplemente agregue el código a continuación a su aplicación del lado del cliente.

usando el .catchenfoque
axios.get('/foo')
  .catch(function(error) {
      console.log(error.response.data);
      console.log(error.response.data.title); // your title
      console.log(error.response.status);
      console.log(error.response.headers);
  });
usando el try/catchenfoque
try {
  const resp = await axios.get('/foo');
} catch (error) {
  console.log(error.response.data);
  console.log(error.response.data.title); // your title
  console.log(error.response.status);
  console.log(error.response.headers);
}
  • Para más información visita este enlace