본문 바로가기

TIL Temp

유튜브 클론 코딩 #9 - What is Routing?

# 복습 목차

1. Node.JS

2. ExpressJS

3. ES6

4. Babel

5. Middleware

6. Routing

7. MVC

8. Pug


# 6. What is Routing?


- 정의 

라우팅은 URI 및 특정한 HTTP 요청 메서드(GET, POST 등)인 특정 End Point에 대한 클라이언트 요청에 

어플리케이션이 응답하는 방법을 결정하는 것을 말함. 각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며,

이러한 함수는 라우트(경로)가 일치할 때 실행 됨.


app.METHOD(PATH, HANDLER)


app은 express의 인스턴스

METHOD는 HTTP요청 메서드

PATH는 서버에서의 경로

HANDLER는 라우트가 일치할 때 실행되는 함수


app.get('/', function (req, res) {
  res.send('Hello World!');
});


app에는 express가 담겨있음

get은 HTTP 요청 메서드

경로가 '/'일 때

res.send('Hello World!')가 실행됨


Node.JS를 사용할 때, 프로젝트 크기가 커질시 코드를 관리하기 어려워진다.

URL을 통해 요청을 받을 때, 목적어로 들어오는 것을 URI라고 하는데 예를 들어, USERS로 분할해서 관리하면 

훨씬 간결한 코드가 되며 유지보수에도 용의하다.(대신, 구조는 조금 복잡해질 수 있다)


- 라우트 경로

라우트 경로는 문자열, 문자열 패턴 or 정규식일 수 있음.

express.JS는 라우트 경로 일치를 위해 https://www.npmjs.com/package/path-to-regexp 를 사용.


- express.Router

해당 클래스를 사용하면 모듈식 마운팅이 가능한 핸들러를 작성할 수 있음.

Router 인스턴스는 완전한 미들웨어이자 mini-app이라고도 불림.


var express = require('express');
var router = express.Router();

// middleware that is specific to this router
router.use(function timeLog(req, res, next) {
  console.log('Time: ', Date.now());
  next();
});
// define the home page route
router.get('/', function(req, res) {
  res.send('Birds home page');
});
// define the about route
router.get('/about', function(req, res) {
  res.send('About birds');
});

module.exports = router;


이후 app.js에서 라우터 모델을 로드.


var birds = require('./birds');
...
app.use('/birds', birds);

/brids 및 /birds/about 에 대한 요청 및 처리가 가능해짐.


# 참고 자료

http://expressjs.com/ko/guide/routing.html <- 여기 있는 내용을 이해하며 옮겨온 것임. 공식 문서이므로 여길 보길.