라우팅
라우팅은 어플리케이션 엔드포인트(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 |