미들웨어
- HTTP 요청과 응답 사이에서 단계별 동작을 수행해 주는 함수
- HTTP 요청이 들어온 순간 부터 시작
- HTTP 요청과 응답 객체 처리 OR 다음 미들웨어 실행
- HTTP 응답 마무리 까지 미들웨어 동작 사이클이 실행
- req,res,next를 가진 함수를 작성하여 미들웨어로 동작
- 필요한 동작 방식에 따라 미들웨어를 적용할 위치를 결정
- 어플리케이션 미들웨어/ 라우터 미들웨어/ 오류처리 미들웨어
어플리케이션 미들웨어
- use 나 http method 함수를 사용하여 미들웨어를 연결
- 미들웨어를 모든 요청에 공통적으로 적용하기 위한 방법'
- HTTP 요청이 들어온 순간부터 적용된 순서대로 동작
오류처리 미들웨어
- err,req,res,next를 가진 함수를 작성하여 미들웨어로 동작
- 앞선 미들웨어에서 next 함수에 인자가 전달되면 실행
- 이전에 적용된 미들웨어 중 next에 인자를 넘기는 경우 중간 미들웨어들은 뛰어넘고 오류처리 미들웨어가 바로실행
어플리케이션 미들웨어
- router 객체에 미들웨어가 적용되는것
- 특정 경로의 라우팅에만 미들웨러를 적용하기 위한 방법
- app 객체에 라우터가 적용된 이후로 순서대로 동작
함수형 미들웨어
- 하나의 미들웨어를 작성하고, 작동 모드를 선택하면서 사용하고 싶은경우
- 동일한 로직에 설정값만 다르게 미들웨어
const auth = (memberType) => {
return (req, res, next) => {
if (!checkMember(req, memberType)) {
next(new Error(`member is not ${memberType}`));
return;
}
next();
}
}
app.use('/admin', auth('admin'), adminRouter);
app.use('/users', auth('member'), userRouter);
Route Hander
- Route Handler는 라우팅 함수(get/post/put/delete 등)에 적용된 미들웨어
- 일반적인 미들웨어와는 다르게 path parameter를 사용가능
미들웨어 서브 스택
- use나 http method 함수에 여러 개의 미들웨어를 동시에 적용
- 주로 한 개의 경로에 특정해서 미들웨어를 적용하기 위해 사용
- 전달된 인자의 순서 순으로 동작
REST API
- REST 아키텍처를 준수하는 웹 API
- REST API는 API의 동작을 HTTP method + 명사형 URL로 표현함
- REST API는 URL을 통해 자원을 계층적으로 표현함
API
Application Programming Interface
서비스나 프로그램 간에 미리 정해진 기능을 실행 할 수 있도록 하는 규약
REST
웹에서 자료를 전송하기 위한 표현 방법에 대한 아키텍처
JSON
- JavaScript Object Nottion
- 자바스크립트에서 객체를 표현하는 표현식으로 웹 API 데이터 전송할 때 표현식으로 주로 사용
- 웹 API는 기본적으로 데이터를 문자열로 전송
- 어떤 객체를 웹 API를 통해서 문자열로 전달하기 위해 JSON을 사용
- 통신 오베헤드가 매우 작음
- XML에 비해 더욱 적은 표현식을 사용하여 데이터를 효과적으로 표현
MVC패턴
Model
- 데이터에 접근하는 기능 또는 데이터 그 자체를 의미
- 테이터의 읽기,쓰기는 Model을 통해서만 이루어지도록 구성
View
- View는 데이터를 표현하는 기능을 의미
- 주로 Cotroller에 의해 테이터를 전달받고 전달받은 데이터를 화면에 표시해주는 기능을 담당
Controller
- Model을 통해 데이터에 접근하여, 처리 결과를 View로 전달하는 기능을 의미
- 웹 서비스에선 주로 라우팅 함수가 해당 기능을 수행
'Elice SW 2 > TIL' 카테고리의 다른 글
DAY 30 - TIL (0) | 2022.05.16 |
---|---|
DAY 29 - TIL (0) | 2022.05.15 |
DAY 27 - TIL (1) | 2022.05.12 |
DAY 26 - TIL (0) | 2022.05.09 |
DAY 25 - TIL (0) | 2022.05.08 |
댓글