라우팅(routing)

cometLEE·2023년 5월 10일
0

nodeJS

목록 보기
5/9

EXPRESS에서의 기본라우팅

라우팅은 URI(또는 경로) 및 특정한 HTTP 요청 메소드(GET, POST등) 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 법

app.METHOD(PATH, HANDLER)
  • app은 express의 인스턴스
  • METHOD는 HTTP 요청메소드
  • PATH는 서버로부터 경로
  • HANDLER는 라우트가 일치할 때 실행되는 함수(콜백함수)

특이한 라우팅 방법

  • all
app.all('/secret', function (req, res, next) {
  console.log('Accessing the secret section ...');
  next(); // pass control to the next handler
});

다음은 모든 http모듈에서 지원되는 모든 HTTP메소드들을 사용하는 경우, /scret에 대한 요청을 위하여 핸들러가 실행됨.

특이한 경로

  1. (?)
app.get('/ab?cd', function(req, res) {
  res.send('ab?cd');
});

다음의 라우트 경로는 /acd 및 /abcd와 일치.


  1. ()?
app.get('/ab(cd)?e', function(req, res) {
 res.send('ab(cd)?e');
});

다음의 라우트 경로는 /abe 또는 /abcde와 일치합니다.


  1. //
app.get(/a/, function(req, res) {
  res.send('/a/');
});

다음의 라우트 경로는 라우트이름에 a가 포함된 모든항목과 일치


  1. /.문자$/
app.get(/.*fly$/, function(req, res) {
  res.send('/.*fly$/');
});

다음의 라우트 경로는 butterfly 및 dragonfly와 일치, 하지만, butterflyman, dragonflyman 등과는 일치하지 않음

콜백함수란?

파라미터로 전송되는 함수

어떻게 함수가 파라미터로 전송이 되는건가???
그 이유는 javascript는 싱글스레드로, 비동기프로그래밍 방식이다. 따라서 한 작업에 묶여있다기 보다는 먼저 다른작업을 진행하고 있는다.
NON-BLCOKING이라고도 한다.

handler

  • 라우트가 일치하면 handler함수(콜백함수)가 동작하게 되는데..
    콜백함수는 하나뿐이 아닌, next를 통해 다음 콜백함수로 넘길 수 있다.
var cb0 = function (req, res, next) {
  console.log('CB0');
  next();
}

var cb1 = function (req, res, next) {
  console.log('CB1');
  next();
}

var cb2 = function (req, res) {
  res.send('Hello from C!');
}

app.get('/example/c', [cb0, cb1, cb2]);

라우트 다음에 하나의 콜백함수가 아닌, 배열로도 올 수 있는데, 순서대로 실행이 된다.
만약에, next()로 이어주지 않는다면, 그 함수까지만 실행된다.

var cb0 = function (req, res, next) {
  console.log('CB0');
  next();
}

var cb1 = function (req, res, next) {
  console.log('CB1');
}

var cb2 = function (req, res) {
  res.send('Hello from C!');
}

app.get('/example/c', [cb0, cb1, cb2]);

!! 중간에 next()를 뺐을 때

계속 에러가 나지 않고, 삥글삥글 고쳐지기만 한다.. 에러가 안나니 무섭다. 간단한 앱이고 테스트하는데 걱정이 없지만,,, 실제 프로젝트를 진행중일때 이렇게 돌고만 있으면 나도 돌아버릴지도..

profile
server, kubernetes에 관심이 많이 있습니다

0개의 댓글