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 β