Express
Route
λΌμ°ν μ μμ² URI λ° νΉμ ν HTTP μμ² λ©μλ (GET, POST, PUT, DELETE) μΈ νΉμ μλν¬μΈνΈ μ λν ν΄λΌμ΄μΈνΈ μμ²μ λν΄ μ ν리μΌμ΄μ μ΄ μλ΅νλ λ°©λ²μ κ²°μ νλκ²
Syntax
app.METHOD(PATH, HANDLER)
Parameter
- app
express
μ μΈμ€ν΄μ€
- METHOD
- HTTP μμ² λ©μλ
- PATH
- μλ² κ²½λ‘
- HANDLER
- λΌμ°νΈκ° μΌμΉν λ μ€νλλ ν¨μ
Example
κ° μμ²μ λ°λ₯Έ λΌμ°νΈλ₯Ό μ μνκ³ μ΄μ μλ΅νλ€.
var express = require('express');
var app = express();
app.get('/', function(req, res) {
res.send('hello world');
});
Method
λνμ μΈ Express λΌμ°ν λ©μλλ λ€μκ³Ό κ°λ€.
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.post('/', function (req, res) {
res.send('Got a POST request');
});
app.put('/user', function (req, res) {
res.send('Got a PUT request at /user');
});
app.delete('/user', function (req, res) {
res.send('Got a DELETE request at /user');
});
Route Chain
app.route() μ μ΄μ©νλ©΄ λΌμ°νΈ κ²½λ‘μ λν 체μ΄λ νΈλ€λ¬λ₯Ό μμ± ν μ μλ€.
app.route('/book')
.get(function(req, res) {
res.send('Get a random book');
})
.post(function(req, res) {
res.send('Add a book');
})
.put(function(req, res) {
res.send('Update the book');
});
all()
λ©μλλ₯Ό ν΅ν΄ λͺ¨λ μλ΅μ λμλ κ°λ₯.
app.route('/book')
.all(function(req, res) {
res.send('Get a random book');
});
Route Moduler
λͺ¨λμ λ§μ΄ν μ΄ κ°λ₯ν νΈλ€λ¬μ μμ±
var express = require('express');
var 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;
var birds = require('./birds');
...
app.use('/birds', birds);
/birds
λ° /birds/about
μ λν μμ²μ μ²λ¦¬ κ°λ₯νλ©° ν΄λΉ λΌμ°νΈμ λν νΉμ λ―Έλ€μ¨μ΄ ν¨μμΈ timeLog λ₯Ό νΈμΆ
Express λ HTTP λ©μλμ ν΄λΉνλ λ€μκ³Ό κ°μ λΌμ°ν λ©μλλ₯Ό μ§μνλ€.
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
.
Path
URI κ²½λ‘λ λ¬Έμμ΄ νΉμ μ κ·μμ ν¨ν΄μλ μ μ©λλ€.
Character Pattern
// 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');
});
Regular Expression
// a κ° ν¬ν¨λ λͺ¨λ νλͺ©κ³Ό μΌμΉ
app.get(/a/, function(req, res) {
res.send('/a/');
});
// butterfly, dragonfly κ³Όλ μΌμΉ
// butterflyman, dragonfly man κ³Όλ λΆμΌμΉ
app.get(/.*fly$/, function(req, res) {
res.send('/.*fly$/');
});
Response
μλ΅ μ€λΈμ νΈμ λν λ©μλλ μλ΅μ ν΄λΌμ΄μΈνΈμ μ μ‘νκ³ μμ² λ° μλ΅μ μ£ΌκΈ°λ₯Ό μ’
λ£ν μ μλ€.
λΌμ°νΈ νΈλ€λ¬λ‘λΆν° λ€μ λ©μλμ€ νλλΌλ νΈμΆλμ§ μλ κ²½μ° ν΄λΌμ΄μΈνΈ μμ²μ μ μ§λ μ±λ‘ λ°©μΉ λλ€.
λ©μλ | μ€λͺ |
---|---|
res.download() | νμΌμ΄ λ€μ΄λ‘λλλλ‘ ν둬ννΈν©λλ€. |
res.end() | μλ΅ νλ‘μΈμ€λ₯Ό μ’ λ£ν©λλ€. |
res.json() | JSON μλ΅μ μ μ‘ν©λλ€. |
res.jsonp() | JSONP μ§μμ ν΅ν΄ JSON μλ΅μ μ μ‘ν©λλ€. |
res.redirect() | μμ²μ κ²½λ‘λ₯Ό μ¬μ§μ ν©λλ€. |
res.render() | 보기 ν ν리νΈλ₯Ό λ λλ§ν©λλ€. |
res.send() | λ€μν μ νμ μλ΅μ μ μ‘ν©λλ€. |
res.sendFile | νμΌμ μ₯ν μ€νΈλ¦Όμ ννλ‘ μ μ‘ν©λλ€. |
res.sendStatus() | μλ΅ μν μ½λλ₯Ό μ€μ ν ν ν΄λΉ μ½λλ₯Ό λ¬Έμμ΄λ‘ ννν λ΄μ©μ μλ΅ λ³Έλ¬ΈμΌλ‘μ μ μ‘ν©λλ€. |
const router = express.Router();
// ν΄λΌμ΄μΈνΈκ° λ£¨νΈ κ²½λ‘λ‘ μ§μ
νλ©΄ /index κ²½λ‘λ‘ λ¦¬λ€μ΄λ νΈ μν¨λ€.
router.all('/', (req, res) => {
res.redirect('/index');
});
// λͺ¨λ κ²½λ‘λ₯Ό index λ‘ λλλ§ νλ€.
router.all('*', (req, res) => {
res.render('index');
});
β Node HTTP Transection β