728x90
반응형
SMALL
Do it! Node.js 프로그래밍 입문 공부단 6일차 입니다.
상태코드와 err 객체
코드 | 메시지 | 설명 |
400 | Bad Request | 클라이언트 요청이 잘못되었거나 유효하지 않음 |
401 | Unauthorized | 권한이 없어 거절되었지만 인증을 다시 시도할 수 있음 |
403 | Forbidden | 권한이 없어 거절되었고 인증을 시도하면 계속 거절됨 |
404 | Not Found | 해당 데이터를 찾을 수 없음 |
500 | Internal Server Error | 서버에서 요청을 처리하는 동안 오류가 발생 |
오류 처리를 위한 미들웨어 함수의 기본형
const errorHandler = (err, req, res, next) => {
// err : 발생한 오류의 여러 정보가 담겨있음
// err.message : 오류 메시지를 나타내는 문자열
// err.name : 오류이름을 나타내는 문자열
// err.stack : 오류가 발생한 위치를 알려주는 문자열
// err.status(또는 err.statusCode) : res.statusCode로 사용하는 숫자.
// 상태 코드가 4xx나 5xx가 아니라면 500으로 설정
// next : 다음 미들웨어를 호출.
// 미들웨어 함수를 만들 때는 next인자를 사용해서
// 다음에 실행할 미들웨어로 넘어가도록 합니다.
// ...
}
오류 처리를 위한 미들웨어 함수 만들기
middlewares/errorHandler.js
const errorHandler = (err, req, res, next) => {
const status = err.status || 500
switch (status) {
// 잘못된 요청
case 400:
res.status(status).json({
title: "Bad Request",
message: err.message
})
break;
// 권한 없음
case 401:
res.status(status).json({
title: "Unauthorized",
message: err.message
})
break;
// 금지됨
case 403:
res.status(status).json({
title: "Forbidden",
message: err.message
})
break;
// 찾을 수 없음
case 404:
res.status(status).json({
title: "Not Found",
message: err.message
})
break;
// 서버 오류
case 500:
res.status(status).json({
title: "Internal Server Error",
message: err.message
})
break;
default:
res.status(status).json({
message: "No Error"
})
break;
}
}
module.exports = errorHandler
app.js
// 아래 코드 추가
const errorHandler = require("./middlewares/errorHandler")
app.use(errorHandler)
// err text code
app.get("/test", (req, res, next) => {
const error = new Error("테스트용 에러")
error.status = 401
next(error)
})
미들웨어 등록 순서
- express를 비롯해 필요한 패키지 import
- express 인스턴스 생성
- 라우트나 오류처리 외의 미들웨어를 등록
- 라우트 코드나 라우터 미들웨어 등록
- 오류 처리 미들웨어 등록
- 서버 실행
728x90
반응형
LIST
'Node.js' 카테고리의 다른 글
[Node.js] 노드제이에스 - 몽고DB (2) | 2024.02.09 |
---|---|
[Node.js] 노드제이에스 - 미들웨어 함수 만들기 (0) | 2024.02.08 |
[Node.js] 노드제이에스 - 바디파서 미들웨어 (0) | 2024.02.08 |
[Node.js] 노드제이에스 - 익스프레스 미들웨어 (0) | 2024.02.08 |
[Node.js] 노드제이에스 - 익스프레스의 요청 객체와 응답 객체 (0) | 2024.02.07 |