-
Express - Router 라우팅 , req , resExpress.js 2021. 9. 25. 05:54
익스프레스를 사용하는 이유 중 하나는 라우팅을 깔끔하게 관리할 수 있다는 점이다.
// routes/index.js const express = require('express'); const router = express.Router(); router.get('/',(req,res) => { res.send('Hello , Express'); }); module.exports = router;
// app.js const path = require('path'); dotenv.config(); const indexRouter = require('./routes'); const userRouter = require('./routes/user'); app.use('/',indexRouter); app.use('/user',userRouter); app.use((req,res,next) => { res.status(404).send('Not Found'); }); ...
./routes = ./routes/index.js
indexRouter는 use의 '/'와 get의 '/'가 합쳐져 GET / 라우터가 되었다.
userRouter는 usedml '/user'와 get 의 '/'가 합쳐져 GET /user 라우터가 되었다.라우트에 연결된 나머지 미들웨어들을 건너뛰고 싶을 때 next('route') 를 사용한다.
router.get('/',function(req,res,next){ next('route'); },(req,res,next) => { console.log('실행되지 않습니다'); next(); },(req,res,next) => { console.log('실행되지 않습니다'); next(); }); router.get('/',function(req,res){ console.log('실행된다.'); res.send('Hello, Express'); });
[ 라우트 매개변수 ]
주소에 :id가 있다. 이 부분에 다른 값을 넣을 수 있다.
/users/1 이나 users/123 등의 요청을 처리한다.
:id에 해당하는 값은 req.params 객체 안에 들어 있다.
:id => req.params.id
:type => req.params.type일반 라우터보다 뒤에 있어야 한다.
router.get('/user/:id',function(req,res){ console.log('얘만 실행됩니다.'); }); router.get('/user/like',function(req,res){ console.log('전혀 실행되지 않습니다.'); });
주소에 쿼리스트링을 사용하는 경우도 있다.
쿼리스트링의 키-값 정보는 req.query 객체 안에 있다./user/123?limit=5&skip=10 req.params = { id : '123' } req.query = { limit : '5' , skip : '10' }
router.get('/abc',(req,res) => { res.send('GET /abc'); }); router.post('/abc',(req,res) => { res.send('POST /abc'); }); => router.route('/abc') .get((req,res) => { res.send('GET /abc'); }) .post((req,res) => { res.send('POST /abc'); });
[ req ]
- res.writeHead, res.write , res.end 사용 가능
- res.send , res.sendFile 메서드 많이 사용
- req.app : req 객체를 통해 app 객체에 접근 할 수 있다. ex ) req.app.get('port')
- req.body : body-parser 미들웨어가 만드는 요청의 본문을 해석한 객체
- req.cookies : cookie-parser 미들웨어가 만드는 요청의 쿠키를 해석한 객체
- req.ip : 요청의 ip 주소가 담겨져 있다.
- req.params : 라우터 매개변수에 대한 정보가 담긴 객체
- req.query : 쿼리스트링에 대한 정보가 담긴 객체
- req.signedCookies : 서명된 쿠키들은 req.cookies 대신 여기에 저장
- req.get(헤더 이름 ) : 헤더의 값을 가져오고 싶을 떄 사용하는 메서드
[ res ]
- res.app : app 객체 접근
- res.cookie( 키 , 값 , 옵션 ) : 쿠키 설정
- res.clearCookie( 키 , 값 , 옵션 ) : 쿠키 제거
- res.end() : 데이터 없이 응답
- res.json(JSON) : JSON 형식의 응답
- res.redirect(주소) : 리다이렉트할 주소와 함께 응답
- res.send(데이터 ) : 데이터와 함께 응답 보냄
'Express.js' 카테고리의 다른 글
JWT (0) 2021.09.24 Express - Middleware (0) 2021.09.20