express framework npm 통해 다운로드, express 가 http 모듈로 작성햇던 것과 가장 큰 차이점은
- 미들웨어를 붙이기 쉽다
- 자체 라우터를 제공한다
기본적인 루트 :
mkdir myapp -> cd myapp -> npm init -> npm install express --save (디팬던시 추가)
컨베이어 벨트 위에 올라가있는 request에 무언가 악세사리를 붙이거나, 불량품이라면 밖으로 걷어내는 역할을 한다. 미들웨어는 express의 큰 장점 중 하나다. express 애플리케이션은 기본적으로 일련의 미들웨어 함수 호출이다.
1.모든 요청에 대해 url이나 메소드를 알고자 할 때
2.POST 요청 등에 쓰이는 body(payload)를 쉽게 얻어내고자 할 때
3.모든 요청/응답에 CORS 헤더를 붙일 때
4.요청 헤더에 사용자 인증 정보가 담겨있는지 확인하고 싶을 때
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser')
const routes = require('./routes.js');
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use(function(req, res, next) {
console.log(`${req.method}\t ${req.url}`)
next()
})
app.use('/', routes);
const server = app.listen(3000, () => {
/* eslint no-console: 0 */
console.log('chatterbox-serer listen on 3000');
});
module.exports = server;
express 에서는 모든게 미들웨어라고 할 수 있다.
어플리케이션을 구현할때 굉장히 큰 도움이 됨
ex)
$ npm install body-parser --save
body : 웹 브라우저 쪽에서 요청한 정보의 본체
header : 그 정보를 설명하는 것
그 본체인 데이터를 parser(분석) 해서 우리가 필요한 형태로 가공
=> body-parser
사용법 : app.use(bodyparser.urlencoded({ extended: false }))
ex)
$ npm install compression --save
압축을 시켜준다.
app.use(function (req, res, next) {
fs.readdir("./data", function (error, filelist) {
req.list = filelist;
next(); /* 이 변수에 그 다음에 호출 되어야 할 미들웨어가 담겨있음 */
});
});
ex)사진 올리기등 (기본내장)
app.use(express.static('public')) public 디렉토리 안에서 스태틱 파일을 찾겠다. url 을 통해서 접근할 수 있다.
app.use((req, res, next) => {
res.status(404).send("Sorry cant find that!");
});
라우트가 굉장히 많아질 수 있다 (100개 200개 1000개)
-> 파일별로 정리 하고 싶을 때 사용
express.Router (라우터를 만들어줌)
편하게 익스프레스 세팅을 도와준다.