[TIL] 24-11-21
미들웨어
웹 서버에서 요청을 받을때, 모든 요청에 대한 공통적인 처리를 하고 싶을 때 필요한 것
ex) 모든 요청에 대한 로그 남기는 로깅 미들웨어, 로그인 상태인지 인증 미들웨어, 에러 핸들링 미들웨어, 특정 사용자만 API 접근 가능하게
사용자가 웹 페이지에서 From을 통해 전송한 데이터를 서버에서 쉽게 파싱해서 사용할 수 있게
Express.js 미들웨어
app.use(express.urlencoded({ extended: false }));
app.use(express.json());
-
app.use
를 통해 전역으로 미들웨어를 등록했다 라고 말 할 수 있음 -
unlencoded
:form-urlencoded
라는 body 데이터를 손쉽게 코드에서 사용할 수 있게 -
json
:JSON
이라는 body 데이터를 손쉽게 코드에서 사용할 수 있게
Express.js 미들웨어 예시
app.use((req, res, next) => {
// 코드
});
-
req: 요청 정보
-
res: 응답 정보
-
next: 다음 스택으로 정의된 미들웨어 호출
Router와 미들웨어의 차이
-
Router는 미들웨어 기반으로 구현된 객체이므로 미들웨어와 동일한 방식으로 작동
-
Router는 미들웨어 함수를 특정 경로로 바인딩하는 역할, 요청이 들어온 URL경로에 따라 서로 다른 미들웨어를 실행시킬 수 있게 도와줌
Express.js의 미들웨어가 실행되는 경우
-
app.use(Middleware)
: 모든 요청에서 미들웨어가 실행된다 -
app.use('/api', Middleware)
: /api로 시작하는 모든 요청에서 미들웨어를 실행한다. -
app.post('/api', Middleware, (req, res,) => {} )
: /api로 시작되는POST
요청에서 미들웨어를 실행한다.
데이터 유효성 검증 라이브러리 Joi
-
Joi는 JavaScript 유효성 검증을 위한 라이브러리.
-
Joi는 여러 타입과 규칙을 이용해 유효성을 검증하며, 유효성 검증에 실패하면 오류 발생시킴
유효성 검증(Validation)이란 무엇인가?
-
Validation은 말 그대로 어떤것을 검증
-
Nest.js에서는 Pipe라는 이름으로 불리기도 함