참고자료 : 'Node.js 교과서(조현영)'
Node Package Manager의 약자
npm 에 업로드된 노드 모듈을 패키지라고 부른다.
설치한 패키지의 버전을 관리한다.
노드 프로젝트를 시작하기 전에는 폴더 내부에 무조건 package.json 부터 만들어야 함.
npm init
http 와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크
npm install express
const express = require("express")
const app = express()
const port = 5000
app.get('/',(req,res) => {
res.send("Hello World");
});
app.listen(port, () => console.log(`Example app listening on port ${port}`))
요청과 응답의 중간에 위치한다.
위에서 아래로 순서대로 실행된다
기능을 추가하거나, 나쁜 요청을 걸러내거나
app.use(미들웨어)
: 모든 요청에서 미들웨어 실행
app.use('/abc',미들웨어)
: abc로 시작하는 요청에서 미들웨어 실행
app.post('/abc',미들웨어)
: abc 로 시작하는 POST 요청에서 미들웨어 실행
(req,res,next) => {}
꼴. next() 를 함수 내에서 실행하여야 다음 미들웨어로 넘어가게 된다.
(err, req,res,next) => {}
body-parser
: 요청 본문의 데이터를 해석하여 req.body 객체로 만들어준다. 멀티파트(동영상, 동영상, 파일) 데이터는 처리하지 못한다.
app.use(express.json()); ` app.use(express.urlencoded({extended : false}));
raw 나 text 형식의 데이터를 다루는 게 아니라면 따로 설치할 필요 없음
cookie-parser
: request에 동봉된 쿠키를 해석하여
req.cookies
객체로 만든다.app.use(cookieParser(비밀키));
- 쿠키 생성 /제거
// 쿠키 생성하기 res.cookie("key","value",{options}); // 쿠키 제거하기 res.clearCookie('key','value',{options});
multer
: 이미지, 동영상 등의 파일을 멀티파트 형식으로 업로드할 때
- 멀티파트 : multipart/form-data 폼을 통해 업로드하는 데이터의 형식
- 설치하기 :
npm i multer
in console
app.get 같은 메서드가 라우터 부분.
const express = require('express');
const router = express.Router();
router.get('/', (req,res) => {
res.send('Hello World')
});
module.exports = router;
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello, User');
});
module.exports = router;
index.js
는 생략 가능
const express = require('express');
const app = express();
const path = require('path');
const indexRouter = require('./routes');
const userRouter = require('./routes/user');
const port = 5000;
app.use((req,res,next) => {
console.log("hello")
next();
});
app.use('/', indexRouter);
app.use('/user', userRouter);
app.use((req,res,next) => {
res.status(404).send('Not Found');
});
app.listen(port, () => console.log(`listening on port ${port}`))
router.get('/users/:id', (req, res) => {
console.log(req.params.id, req.query)
return res.end('success')
}) ;
/users/1 or /users/2 등의 요청을 처리할 수 있게 된다.
id 값은 req.params.id
로 이용 가능하다.
router.route('/users')
.get((req,res) => {
res.send('get');
})
.post((req,res) => {
res.send('post');
})