생활코딩 강의를 보고 작성하였습니다.
소프트웨어를 만들 때 처음부터 끝까지 모두 만드는 경우는 거의 없다. 이미 누군가가('나'일수도 있고!) 만들어 놓은 소프트웨어를 부품으로 사용해 나의 소프트웨어를 만들어간다. 이 개념에 따르면, Express에서는 Express측이 아닌 다른 누군가 만들어 놓은 소프트웨어가 Third-party middleware다.
[Express의 Third-party 미들웨어 목록]
https://expressjs.com/ko/resources/middleware.html
[주의] express 4.16버전부터 body-parser가 내장되었기 때문에 따로 import 해주지 않아도 된다!!
http://expressjs.com/en/resources/middleware/body-parser.html
//설치
npm install body-parser
//모듈 로드
const bodyParser = require('body-parser')
//적용
app.use(bodyParser.urlencoded({ extended: false }))
/*
bodyParser.urlencoded({ extended: false })는
body-parser가 만들어내는 미들웨어를 표현하는 표현식.
사용자가 전달한 post 데이터를 내부적으로 분석해서 모든 데이터를 가져와 path에 해당하는 콜백을 호출.
호출하게 되면 첫번째 인자로 전달된 req에 body를 만들어줌.(원래 없어요)
*/
/* 원래코드
app.post('/create', (req, res) => {
let body = '';
req.on('data', data => {
body = body + data;
});
req.on('end', () => {
let post = qs.parse(body);
let title = post.title;
let description = post.description;
fs.writeFile(`data/${title}`, description, 'utf8', err => {
res.writeHead(302, {Location: encodeURI(`/page/${title}`)});
res.end();
});
});
});
*/
app.post('/create', (req, res) => {
let post = req.body;
let title = post.title;
let description = post.description;
fs.writeFile(`data/${title}`, description, 'utf8', err => {
res.writeHead(302, {Location: encodeURI(`/page/${title}`)});
res.end();
});
});
http://expressjs.com/en/resources/middleware/compression.html
http 요청시 데이터를 압축한다. 압축을 하고 푸는 과정이 필요하지만 네트워크 전송 비용보다 싸고 빠르기 때문에 압축 방식을 많이 사용한다.
//설치
npm install compression --save
//모듈 로드
const compression = require('compression')
//적용
app.use(compression());
//데이터가 압축되어 전송된다.