웹공부

express js - 라우팅 (작성중)

syom 2021. 10. 5. 11:40

라우팅

라우팅은 어플리케이션 엔드포인트(URI)의 정의, 그리고 URI가 클라이언트 요청에 응답하는 방식을 말한다.
-> 라우팅에 대한 소개 링크

라우트의 예

var express = require('express');
var app = express();

// respond with "hello world" when a GET request is made to the homepage
app.get('/', function(req, res) {
  res.send('hello world');
});

라우트 메소드

라우트 메소드는 HTTP 메소드 중 하나로부터 파생되며, express 클래스의 인스턴스에 연결된다.
-> 앱의 루트에 대한 GET 및 POST 메소드에 대해 정의된 라우트의 예제

// GET method route
app.get('/', function (req, res) {
  res.send('GET request to the homepage');
});

// POST method route
app.post('/', function (req, res) {
  res.send('POST request to the homepage');
});

express 에서 지원하는 라우팅 메소드

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.

app.all()

특수한 라우팅 메소드인 app.all()은 어떠한 HTTP 메소드로부터도 파생되지 않는다. 이 메소드는 모든 요청 메소드에 대해 한 경로에서 미들웨어 함수를 로드하는 데 사용된다.

다음 예에서는, GET, POST, PUT 또는 DELETE 메소드를 사용하는 경우, 또는 http 모듈에서 지원되는 기타 모든 HTTP 요청 메소드를 사용하는 경우 등의 “/secret”에 대한 요청을 위하여 핸들러가 실행된다.

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

라우트 경로

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

  • Express는 라우트 경로의 일치를 위해 path-to-regexp를 사용한다. 라우트 경로를 정의할 수 있는 모든 가능성을 확인하려면 path-to-regexp 문서를 참조하자. Express Route Tester는 기본적인 Express 라우트의 테스트를 위한 편리한 도구이지만, 패턴 일치는 지원하지 않는다.

문자열을 기반으로 하는 라우트 경로의 몇 가지 예는 다음과 같다.

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

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

app.get('/random.text', function (req, res) {
  res.send('random.text');
});

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

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

다음의 라우트 경로는 abcd, abbcd 및 abbbcd 등과 일치한다.

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

다음의 라우트 경로는 abcd, abxcd, abRABDOMcd 및 ab123cd 등과 일치한다.

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

다음의 라우트 경로는 /abe 및 /abcde와 일치한다.

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

-> ?, +, * 및 () 문자는 정규식 문자의 서브세트이다. 하이픈(-) 및 점(.)은 문자열 기반 경로에 의해 문자 그대로 해석된다.

정규식을 기반으로 하는 라우트 경로의 예:

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

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

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

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

라우트 핸들러 부터 수정

'웹공부' 카테고리의 다른 글

node.js 개요, nvm 설치  (0) 2021.10.13
node 와 npm  (0) 2021.10.05
DOM 이란?  (0) 2021.09.28
HTTP(S) 란?  (0) 2021.09.28
SSR 서버사이드 렌더링  (0) 2021.09.07