Github 參考

不知道大家在用 POSTMAN 對前幾天寫的 API 丟 request 有沒有遇過類似下面的情況:

Cannot GET /user/kerkerj/todoss

通常是丟錯網址時會出現的,或是 code 沒寫好會出現 500 error

這些情況是有辦法接到的,今天我們希望能夠接到後,將 message 轉成 json 格式吐回給 client

因此程式碼如下

app.js

// catch 404 and forward to error handler
app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    res.status(404).jsonp({error: "Not Found"});
    next();
});

// catch 500
app.use(function(err, req, res, next) {
            res.status(err.status || 500).json({error: err.message});
});

基本上這兩段 code 的意思就是加入了兩個 middleware

如果進來的 request 是屬於 404 or 500 就會回傳 json 格式

並且依錯誤碼不同而回傳不同的訊息

試著將 server 跑起來

亂丟 request 看看

原本應該會是

Cannot GET /user/kerkerj/todoss

就會變成了 json

{
    "error": "Not Found"
}

這樣一來, client 程式也就能夠統一接收 json 回傳,而不會因為莫名的字串導致解析錯誤而 crash 了!