01. Express.js의 Middleware
✔️Middleware란?
미들웨어는 Express.js의 동작의 핵심
HTTP요청과 응답 사이에서 단계별 동작을 수행해주는 함수
✔️Middleware 동작원리
Express.js의 미들웨어는 HTTP요청이 들어온 순간부터 시작됨
미들웨어는 HTTP요청과 응답 객체를 처리하거나, 다음 미들웨어를 실행할 수 있음.
HTTP 응답이 마무리될 때 까지 미들웨어 동작 사이클이 실행 됨
02. Middleware의 작성과 사용
✔️Middleware 작성법
req, res, next를 가진 함수를 작성하면 해당 함수는 미들웨어로 동작할 수 있음
- req는 HTTP 요청을 처리하는 객체
- res는 HTTP 응답을 처리하는 객체
- next는 다음 미들웨어를 실행하는 함수
✔️Route Hanlde와 middleware
Route Hanlder도 미들웨어의 한 종류
Route Hanlder는 라우팅 함수(get, post, put, delete 등)에 적용된 미들웨어
일반적인 미들웨어와는 다르게 path parameter를 사용할 수 있음.
✔️middleware 작성법
req, res, next를 인자로 갖는 함수를 작성하면 미들웨어가 됨
req, res객체를 통해 HTTP요청과 응답을 처리하거나
next함수를 통해 다음 미들웨어를 호출해야 함
next()함수가 호출되지 않으면
미들웨어 사이클이 멈추기 때문에 주의
✔️middleware 사용법
middleware는 적용되는 위치에 따라서
어플리케이션 미들웨어
라우터 미들웨어
오류처리 미들웨어
로 분류 가능
필요한 동작 방식에 따라 미들웨어를 적용할 위치를 결정!
✔️middleware 사용법 - 어플리케이션 미들웨어
use나 http method함수를 사용하여 미들웨어를 연결할 수 있음
미들웨어를 모든 요청에 공통적으로 적용하기 위한 방법
HTTP 요청이 들어온 순간부터 적용된 순서대로 동작 함
✔️middleware 사용법 - 라우터 미들웨어
router 객체에 미들웨어가 적용되는 것 외에는 어플리케이션 미들웨어와 사용방법은 동일
특정 경로의 라우팅에만 미들웨어를 적용하기 위한 방법
app객체에 라우터가 적용 된 이후로 순서대로 동작 함
✔️middleware 사용법 - 미들웨어 서브 스택
use나 http method함수에 여러 개의 미들웨어를 동시에 적용할 수 있음.
주로 한개의 경로에 특정해서 미들웨어를 적용하기 위해 사용
전달된 인자의 순서 순으로 동작
✔️middleware 사용법 - 오류처리 미들웨어
오류처리 미들웨어는 일반적으로 가장 마지막에 위치하는 미들웨어
다른 미들웨어들과는 달리 err, req, res, next 네가지 인자를 가지며,
앞선 미들웨어에서 next함수에 인자가 전달되면 실행 됨.
가장 아래 적용된 err, req, res, next를 이자로 갖는 함수가 오류처리 미들웨어
이전에 적용 된 미들웨어 중 next에 인자를 넘기는 경우 중간 미들웨어들은 뛰어넘고 오류처리 미들웨어가 바로 실행 됨
✔️함수형 middleware
하나의 미들웨어를 작성하고 작동 모드를 선택하면서 사용하고 싶을 경우
미들웨어를 함수형으로 작성하여 사용할 수 있음
ex)API별로 사용자의 권한을 다르게 제한하고 싶은 경우
auth함수는 미들웨어를 반환하는 함수!
auth함수 실행 시 미들웨어의 동작이 결정되는 방식으로 작성 됨
일반적으로 동일한 로직에 설정 값만 다르게 미들웨어를 사용하고 싶을 경우에 활용 됨
✔️middleware 라이브러리
Express.js는 다양한 미들웨어들이 이미 만들어져 라이브러리로 제공됨
유용한 미들웨어를 npm을 통해 추가하여 사용할 수 있음
Express.js홈페이지나 npm 온라인 저장소에서 찾아볼 수 있다.
ex) cors, multer, passport 등
03. JSON
JavaScript Object Notation
자바스크립트에서 객체를 표현하는 표현식으로 시작함
데이터를 표현하는 방법이 단순하고 이해하기 쉬워서 웹 API에서 데이터를 전송할 때 표현식으로 자주 사용됨
✔️Json을 사용하는 이유
웹 api는 기본적으로 데이터를 문자열로 전송하게 됨
어떤 객체를 웹 api를 통해서 문자열로 전달하기 위해 json을 사용함
✔️JSON vs XML
04. Express.js로 REST API구현하기
✔️MVC패턴
MVC패턴은 웹 서비스의 가장 대표적인 프로젝트 구성 패턴으로
프로젝트의 기능들을 어떻게 분리할지에 대한 하나의 구성 방법
Model - View - Controller를 구분하여 프로젝트 구조를 구성하는 것
✔️MVC패턴 - Model
Model은 데이터에 접근하는 기능 또는 데이터 그 자체를 의미
데이터의 읽기, 쓰기는 Model을 통해서만 이루어지도록 구성해야 함
✔️MVC패턴 - View
View는 데이터를 표현하는 기능을 의미
주로 Controller에 의해 데이터를 전달받고
전달받은 데이터를 화면에 표시해주는 기능을 담당
✔️MVC패턴 - Controller
Controller는 Model을 통해 데이터에 접근하며
처리 결과를 View로 전달하는 기능을 의미
웹 서비스에선 주로 라우팅 함수가 해당 기능을 수행함.
✔️메모 목록 구현하기
✔️메모 상세 구현하기
✔️메모 작성 구현하기
✔️메모 수정 구현하기
✔️메모 삭제 구현하기
✔️JSON 데이터 처리 미들웨어 사용하기
express.js는 기본적으로 HTTP body에 전달되는 json데이터를 처리하지 못함
express에서 기본적으로 제공해주는 express.json() 미들웨어를 사용해야 json데이터를 사용할 수 있음
✔️오류 처리 미들웨어 구현하기
가장 마지막 미들웨어로 오류 처리 미들웨어를 적용하면
모든 라우팅에 공통적인 오류처리 로직을 적용할 수 있음.
✔️정리되지 않은 라우팅에 404오류 처리하기
모든 라우팅이 적용 된 이후에 사용되는 미들웨어는 설정된 경로가 없는 요청을 처리하는 Route Handler로 동작함.
Express.js는 기본적인 404페이지를 가지고 있지만 직접 처리가 필요한 경우 이와 같은 Route Handler를 추가해야 함.
참고