[API-day25] - 實戰開發 - 處理 404 & 500
不知道大家在用 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 了!