자료 정리
express 에러 처리 하기
버퀴
2020. 6. 28. 14:34
간단하게 express 로 서버 예제를 만들어 보았습니다.
post로 요청 오는 데이터 id 값을 타입에 따라
type이 number일 경우에는 상태로 201 과 id값을 내보내고
string일 경우에는 상태가 400이고 error message를 내보냅니다.
그 외의 타입일 경우에는 서버에러로 간주하여 500 상태와 error message를 내보내는 코드입니다.
1. 각 라우터에서 error를 처리하는 방법
const app = require("express")();
const logger = require("morgan");
const bodyParser = require("body-parser");
app.use(bodyParser())
app.use(logger("dev"))
app.post("/user", (req, res, next) => {
const { id } = req.body;
let err = "";
console.log(typeof id)
if(typeof id === "number"){
console.log("??")
return res.status(201).json(
{ id }
)
}else if( typeof id === "string"){
return res.status(400).json({ status : 400, message : "type error"})
}
return res.status(500).json({ status : 500, message : "server error"})
})
app.listen(3000, () => {
console.log("3000 포트 서버 작동 중")
})
2. error를 처리하는 미들웨어를 만드는 방법
const app = require("express")();
const logger = require("morgan");
const bodyParser = require("body-parser");
app.use(bodyParser())
app.use(logger("dev"))
app.post("/user", (req, res, next) => {
const { id } = req.body;
let err = "";
console.log(typeof id)
if(typeof id === "number"){
console.log("??")
return res.status(201).json(
{ id }
)
}else if( typeof id === "string"){
console.log("??")
err = new Error("type err");
err.status = 400;
next(err);
}
err = new Error("server error");
return next(err);
})
app.use((req, res, next) => {
const error = new Error("Not Found");
error.status = 404;
next(error);
})
app.use((err, req, res, next) => {
console.log("ERR : ", err);
res.status(err.status || 500);
res.json({
err : {
status : err.status,
message : err.message
}
})
})
app.listen(3000, () => {
console.log("3000 포트 서버 작동 중")
})