[Node.js] Express 서버 만들기 1 - 라우터

jungeundelilahLEE·2021년 2월 9일
0

Node.js

목록 보기
25/27

goal

  • 라우터에 대해서 알아보자

라우팅

  • 라우팅은 URI (or path) 및 특정 http 요청메소드인 특정 endpoint에 대한 클라이언트 요청에, 애플리케이션이 응답하는 방법을 결정하는 것을 뜻한다.

  • 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때만 실행된다.

  • app.METHOD ( PATH, HANDLER )
    METHOD : http 요청 메서드
    PATH : 서버 경로
    HANDLER : 라우트가 일치할 때 실행되는 함수
// 홈페이지에서 Hollw World!로 응답
app.get('/', function (req, res) {
  res.send('Hello World!');
});
// 루트라우트(/)에서 post 요청에 응답
app.post('/', function (req, res) {
  res.send('Got a POST request');
});
// user라우트(/user)에서 post 요청에 응답
app.post('/user', function (req, res) {
  res.send('Got a POST request');
});

라우팅 메소드

  • get, post, put, head, delete, options, trace, copy, lock, mkcol, move, purge, propfind, proppatch, unlock, report, mkactivity, checkout, merge, m-search, notify, subscribe, unsubscribe, patch, search 및 connect. 을 지원한다.
  • 올바르지 않은 JavaScript 변수 이름으로 변환되는 메소드를 라우팅하기위해서는 "대괄호 표기법"을 사용한다.
    예) app['m-search']('/', function ...
  • 특수한 라우팅 메소드인 app.all()은 어떠한 HTTP 메소드로부터도 파생되지 않는다. 이 메소드는 "모든 요청 메소드에 대해 한 경로에서 미들웨어 함수를 로드하는 데 사용"된다.

라우트 경로

  • 요청 메소드와의 조합을 통해, 요청이 이루어질 수 있는 엔드포인트를 정의한다.
  • 문자열, 문자열패턴, 정규식 등을 쓴다.

라우트 핸들러

  • 미들웨어와 비슷하게 작동하는 여러 콜백 함수를 제공하여 요청을 처리한다.
    • 하나의 콜백함수는 하나의 라우트를 처리할 수 있다.
    • app.get('/example/a', function (req, res) {
      res.send('Hello from A!');
      });
    • 2개 이상의 콜백함수는 하나의 라우트를 처리할 수 있다. (next오브젝트를 반드시 지정해야 한다.)
      app.get('/example/b', function (req, res, next) {
      console.log('the response will be sent by the next function ...');
      next();
      }, function (req, res) {
      res.send('Hello from B!');
      });

응답 메소드

  • 답 오브젝트에 대한 메소드(res)는 응답을 클라이언트로 전송하고 요청-응답 주기를 종료할수 있다.
  • methoddescription
    res.download()파일이 다운로드되도록 프롬프트
    res.end()응답 프로세스를 종료
    res.json()json응답을 전송
    res.jsonp()jsonp지원을 통해 json응답을 전송
    res.redirect()요청의 경로를 재지정
    res.render()view 템플릿을 렌더링
    res.send()다양한 유형의 응답을 전송
    res.sendFile파일을 octet stream 형태로 전송
    res.sendStatus()응답 상태 코드를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송

express.Router()

Router 객체로 라우팅 분리하기

  1. 라우터를 모듈로서 작성했다.
  2. 라우터 모듈에서 미들웨어 함수를 로드했다.
  3. 라우트를 정의했다.
  4. 기본 앱의 하나의 경로에 라우터 모듈을 마운트했다.
// 1
var express = require('express');
var router = express.Router();

// 2
router.use(function timeLog(req, res, next) {
  console.log('Time: ', Date.now());
  next();
});

// 3
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

// 4
module.exports = router;
profile
delilah's journey

0개의 댓글