express.Router
라우팅이란 애플리케이션 엔드포인트(URI)의 정의, 그리고 URI가 클라이언트 요청에 응답하는 방식이다.
express.Router 클래스를 사용하면 모듈식 마운팅 가능한 핸들러를 작성할 수 있다. Router 인스턴스는 미들웨어로, 라우터 모듈에서 미들웨어 함수를 로드한다. (미들웨어란 구조 내에서 중간 처리를 위한 함수이다. use() 안에 들어가는 함수. 먼저 로드되는 미들웨어 함수가 먼저 실행된다. 순서가 중요!) 따라서 Router 란 라우터 단위로 request 가 발생하면 실행되거나, 특정 라우터가 실행되었을 때마다 실행되는 미들웨어이다.
app.use(index) // 정적파일을 제외한 모든 요청을 index 미들웨어가 처리한다.
app.use('/', indexController) // 특정 주소('/')의 요청이 있을 때만 설정한 미들웨어 indexController를 실행한다.
app.use(); // 애플리케이션의 모든 라우터에 대한 미들웨어를 마운트
router.use(); // 특정 라우터에 대한 미들웨어를 마운트, subpath 를 정의하기 위해서 사용함.
route parameters 란 url 안의 특정 위치에서 변수를 추출하기 위한 url segment 이다.
http://localhost:3000/products/23 와 같은 url 이 서버에 도착했다면,
router.use('/products/:productsId', function(req,res) { // :변수 를 추출한다.
res.send(req.params)
});
이상으로 express.Router 미들웨어에 대해 간략히 알아보았다.
코드 간결화
라우트는 라우팅을 위한 Router 클래스를 사용하고,
컨트롤러에 api 동작 부분만 모듈화시켜서 코드를 간결하게 만든다.
예) user디렉토리에 index.js 는 라우팅을 담당하고, user.ctrl.js 는 api 동작 코드를 담는다.
이렇게 하면 프로젝트의 루트 디렉토리(/) 에 있는 index.js 에서 app.use('/users', user); 를 통해 /users 요청을 모두 /user/index.js 로 보낸다.
// controllers>home>index.js
const { Router } = require('express');
const ctrl = require('./user.ctrl');
router.get('/', user.ctrl.index);
module.exports = router;
아래는 스토어쪽 index.js 라우터이다.
// index.js router.use('/', require('./home')); // 홈 router.use('/products', require('./products')); // 스토어 router.use('/cart', require('./cart')); // 장바구니 router.use('/checkout', require('./checkout')); // 결제페이지
api 스펙
GET | /products/:id |
상품을 불러온다. (태그, 생성날짜, 상세설명, 하트 포함) |
POST | /proudcts/like/:product_id | 하트 표시한 상품 |
GET | /checkout | 결제 api |
GET | /checkout/complete | 결제완료 api |
POST | /checkout/complete | 결제정보 작성 api |
GET | /checkout/success | 결제완료 api |
GET | /cart | 장바구니(총결제금액, 제품리스트, 총가격) api |
'TIL' 카테고리의 다른 글
TIL D-73 Xd 와이어프레임 만들기 (0) | 2019.11.20 |
---|---|
TIL D-74 User Requirements 작성 (0) | 2019.11.19 |
TIL D-76 heap sort (0) | 2019.11.16 |
TIL D-78 교육봉사 시작 (0) | 2019.11.14 |
TIL D-80 중첩 json (0) | 2019.11.12 |
댓글