본 자료는 Elice 플랫폼의 자료를 사용하여 정리하였습니다.
Express.js의 Middleware
Middleware란?
- Express.js 동작의 핵심
- HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수
Middleware 동작원리
- HTTP 요청이 들어온 순간부터 시작
- 미들웨어는 HTTP 요청과 응답개체를 처리하거나, 다음 미들웨어를 실행
- HTTP 응답이 마무리될 때까지 미들웨어 동작 사이클이 실행
Middleware의 작성과 사용
작성법
const logger = (req, res, next) => {
console.log(`Request ${req.path}`);
next();
}
Route Handler와 middleware
- Route Handler도 미들웨어의 한 종류
- Route Handler는 라우팅 함수(get, post, put, delete 등)에 적용된 미들웨어
- path parameter 사용 가능
사용법
- 적용되는 위치에 따라 어플리케이션 미들웨어, 라우터 미들웨어, 오류처리 미들웨어로 분류가능
- 어플리케이션 미들웨어
- use나 http method함수로 연결
- 순차적으로 적용
app.use(함수명)
app.get('/', (req, res, next) => {
res.send('test');
});
- 라우터 미들웨어
- router 객체에 미들웨어가 적용되는 것 외에는 어플리케이션 미들웨어와 동일
- 특정 경로의 라우팅에만 적용하기 위한 방법
router.use(함수명)
router.get('/', (req, res, next) => {
res.send('test');
});
app.use('/admin', router);
- 미들웨어 서브스택
- use나 http method 함수에 여러개의 미들웨어로 동시에 적용가능
app.use(함수명1, 함수명2)
app.use('/admin', auth, router);
app.get('/', logger, (req, res, next) => {
res.send('test');
});
- 오류처리 미들웨어
- 일반적으로 마지막에 위치하는 미들웨어
err
, req
, res
, next
네가지 인자를 가진다.
- 앞선 미들웨어에서 next함수에 인자가 전달되면 실행된다.
- 함수형 미들웨어
const auth = (memberType) => {
return (req, res, next) => {
if (!checkMember(req, memberType)) {
next(new Error(`member not ${memberType}`));
return;
}
next();
}
}
app.use('/admin', auth('admin'), adminRouter);
app.use('/users', auth('memver'), userRouter);
REST API
REST API란?
- REST + API
- REST 아키텍처를 준수하는 웹 API
- Restful API라고도 한다.
API란?
- Application Programming Interface
- 서비스나 프로그램간에 미리 정해진 기능을 실행할 수 있도록 하는 규약
REST란?
- REpresentational State Transfer
- 웹에서 자료를 전송하기 위한 표현방법에 대한 아키텍처
JSON
JSON이란?
- JavaScript Object Notation
- 객체를 표현하는 표현식
Object
Array
Express.js로 REST API 구현하기
MVC 패턴
- MVC 패턴은 웹 서비스의 가장 대표적인 프로젝트 구성 패턴
- 프로젝트의 기능들을 어떻게 분리할지에 대한 하나의 구성방법
- Model - View - Controller를 구붖ㄴ하여 프로젝트 구조를 구성하는 것
Model
- Model은 데이터에 접근하는 기능 또는 데이터 그 자체를 의미한다.
- 데이터의 읽기, 쓰기는 Model을 통해서만 이루어지도록 구성해야 한다.
View
- View는 데이터를 표현하는 기능을 의미한다.
- 주로 Controller에 의해 데이터를 전달받고 전달받은 데이터를 화면에 표시한다
Controller
- Controller는 Model을 통해 데이터에 접근하여 처리결과를 View로 전달해준다.
- 웹 서비스에선 주로 라우팅 함수가 해당 기능을 수행한다.
Postman 사용하기
Postman이란?