익스프레스JS란?
NodeJS로 만들어진 웹 프레임워크
개념 5가지
- 애플리케이션
- 미들웨어
- 익스프레스에 기능을 추가하고 싶을 때 사용 - 라우팅
- url 처리에 사용 - 요청 객체
- 응답 객체
애플리케이션
- 익스프레스 인스턴스를 애플리케이션이라고 함
ex) const express = require('express');
const app =express();
-> 익스프레스 객체를 받은 app이라는 변수는 어플리케이션 - 서버에 필요한 기능인 미들웨어를 애플리케이션에 추가
- 라우팅 설정 가능
- 서버를 요청 대기 상태로 만들 수 있음
ex) app.listen(3000, function(){console.log('Server is running');};
미들웨어
- 함수들의 연속
- 로깅 미들웨어
const express = require('express'); const app = express(); function logger(req, res, next){ console.log('I am logger'); next(); //미들웨어는 마지막에 next함수를 호출해주어야 한다. 다음 로직으로 넘어가기 위해서 } function logger2(req, res, next){ console.log('I am logger2'); next(); } app.use(logger); //logger라는 미들웨어를 사용하겠다! app.use(logger2); app.listen(3000, function(){ console.log('Server is running'); });
- 서드파트 미들웨어
ex) 서버 쪽에 로그를 남겨주는 morgan을 사용const express = require('express'); const moran = require('morgan'); const app = express(); function logger(req, res, next){ console.log('I am logger'); next(); } function logger2(req, res, next){ console.log('I am logger2'); next(); } app.use(logger); app.use(logger2); app.use(morgan('dev')); app.listen(3000, function(){ console.log('Server is running'); });
결과
- 일반 미들웨어
- 위에서 다룬 미들웨어들이 일반 미들웨어
- 파라미터를 3개(req, res, next) 받는다. - 에러 미들웨어
- 파라미터 4개(err, req, res, next)const express = require('express'); const app = express(); function commonmw(req, res, next){ console.log('commonmw'); next(new Error('error occured')); } function errormw(err, req, res, next){ console.log(err.message); //에러 처리 next(); } app.use(commonmw); app.use(errormw); app.listen(3000, function(){ console.log('Server is running'); });
라우팅
- 요청 url에 대해 적절한 핸들러 함수로 연결해 주는 기능
- 애플리케이션의 get(), post() 메서드로 구현 가능
- 라우팅을 위한 전용 Router 클래스 사용 가능
요청 객체 & 응답 객체
- 클라이언트 요청, 응답 정보를 담은 객체
- http 모듈의 request, response 객체를 래핑 한 것(좀 더 사용하기 쉽게 하기 위해)
- req.params(), req.query(), req.body(), res.send(), res.status(), res.json() 메서드를 주로 사용
Reference
'Javascript > Node.js' 카테고리의 다른 글
SuperTest 연습 (0) | 2020.06.11 |
---|---|
테스트 주도 개발(TDD) (0) | 2020.06.10 |
NodeJS의 특징 (0) | 2020.06.09 |
Https와 Http2 (0) | 2019.11.06 |
Rest API와 라우팅 (0) | 2019.11.06 |
댓글