简体   繁体   中英

Always return JSON data from ExpressJS default error handler

I am building an API server using ExpressJS. I want to ensure that the server always responds with JSON data rather than HTML data. For all the custom routes that I define, I can make the server respond with JSON data.

But in case of errors like "Page not found (404)" or "Internal Server Error (500)" the server responds with HTML content. Is there any inbuild configuration settings that allow making these responses in JSON format?

I can define custom error handlers for this, but I wish to use the features of inbuild error handler like hiding stack trace based on NODE_ENV.

According to the express documentation, you may handle each 404 and 500 server errors like this to send json (or any other response you like)

Send 404 as a json reponse,

app.get('*', function(req, res){
    res.status(404).json({}); // <== YOUR JSON DATA HERE
});

For 500 Internal server error ,

app.use(function (err, req, res, next) {
    console.error(err.stack)
    res.status(500).json({}) // <== YOUR JSON DATA HERE
})

Hope that helps!

Please follow these references for more info

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM