.js : npm1 - Express
참고자료 : 'Node.js 교과서(조현영)'
npm
Node Package Manager의 약자
npm 에 업로드된 노드 모듈을 패키지라고 부른다.
package.json 으로 패키지 관리하기
설치한 패키지의 버전을 관리한다.
노드 프로젝트를 시작하기 전에는 폴더 내부에 무조건 package.json 부터 만들어야 함.
- console 에서
npm init
익스프레스
http 와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크
- HTTP 요청 본문 파싱
- 쿠키 파싱
- 세션 관리
- URL 과 HTTP 요청 메서드 기반, if 조건으로 routing 구성
- 응답 헤더 결정
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
Router 객체로 라우팅 분리하기
app.get 같은 메서드가 라우터 부분.
- routes/index.js
const express = require('express');
const router = express.Router();
router.get('/', (req,res) => {
res.send('Hello World')
});
module.exports = router;
- routes/user.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
res.send('Hello, User');
});
module.exports = router;
- app.js
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}`))
route 매개변수
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
로 이용 가능하다.
- 일반 라우터 뒤에 위치해야 한다.
- 쿼리스트링의 키-값 정보는 req.query 객체 안에 들어있다.
주소는 같지만 메서드가 다른 코드
router.route('/users')
.get((req,res) => {
res.send('get');
})
.post((req,res) => {
res.send('post');
})
Author And Source
이 문제에 관하여(.js : npm1 - Express), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jujube0/Node.js-패키지-매니저저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)