라우팅은 애플리케이션 엔드포인트(URI)의 정의, 그리고 URI가 클라이언트 요청에 응답하는 방식을 말한다.
다음코드는 기본적인 라우트의 예이다
const express = require('express');
const app = express();
app.get('/', function(req, res) {
res.send('hello world !');
});
다음예는 GET, POST, PUT, DELETE 메소드를 사용하는 경우 또는 http 모듈에서 지원되는 기타 모든 HTTP 요청 메소드를 사용하는 경우 등의 "/secret" 에 대한 요청에 실행된다.
app.all('/secret', function (req, res, next) {
console.log('Accessing the secret section ...');
next();
//next() 는 다음 미들웨어를 실행시키겠다는 function 이다.
라우트 경로는 요청 메소드와 조합을 통해 요청이 이루어질 수 있는 엔드포인트를 정의한다. 라우트 경로는 문자열, 문자열패턴, 정규식일 수 있다.
app.get('/ab?cd', function(req, res) {
res.send('ab?cd');
});
app.get('/ab+cd', function(req, res) {
res.send('ab+cd');
});
app.get('/ab*cd', function(req, res) {
res.send('ab*cd');
});
해당 라우트 경로는 butterfly, dragonfly 와 일치하지만 butterflyman 및 dragonfly man 등과는 일치하지 않는다.
app.get('/.*fly$/', function(req, res) {
res.send('/.*fly$/');
});
다음 표에 표시된 응답 오브젝트에 대한 메소드(res)는 응답을 클라이언트로 전송하고 요청-응답 주기를 종료 할 수 있다. 라우트 핸들러로부터 다음 메소드 중 어느 하나도 호출되지 않는 경우, 클라이언트 요청은 정지된 채로 방치된다.
메소드 | 설명 |
---|---|
res.download() | 파일이 다운되도록 프롬프트한다. |
res.end() | 응답 프로세스를 종료한다. |
res.json() | JSON 응답을 전송한다. |
res.jsonp() | JSONP 지원을 통해 JSON 응답을 전송한다. |
res.redirect() | 요청의 경로를 재지정 한다. |
res.render() | 보기 템플리트를 렌더링한다 |
res.send() | 다양한 유형의 응답을 전송한다. |
res.sendFile() | 파일을 스트림형태로 전송한다 |
res.sendStatus() | 응답 상태코드를 설정 한 후 해당 코드를 문자열로 표현한 내용을 전송한다. |
express.Router 클래스를 사용하면 모듈식 핸들러를 작성할 수 있다. Router 인스턴스는 미들웨어이자 라우팅 시스템이라 "mini-app"이라고 불리는 경우가 많다.
const express = require('express');
const 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에서 다음과같이 라우터 모듈을 불러와야한다.
app.use('/birds', require('./birds');
출처 : Express 라우터