应用

app 对象通常表示 Express 应用程序。通过调用 Express 模块导出的顶级 express() 函数来创建它:

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

app.get('/', function (req, res) {
  res.send('hello world')
})

app.listen(3000)

app 对象具有用于

它还具有影响应用程序行为方式的设置(属性);有关详细信息,请参阅 应用程序设置

Express 应用程序对象可以从 请求对象响应对象 分别称为 req.appres.app

app.locals

J6HpFkYBqix5B4DaVNqSnSzpV3ExyhcCN3cb061pz83mDxhoMvmWSnERILkSYwfh7tGOuMU7OG25kZ+XG4MfmGoNjGaPi0fS0z5JlxGeWp4uG3jt0NHZCnLniBfHybExncZdy7yxlNrRiXrkto/qRux1SEi6y29GNvNbdHYCRk0RjtccYXnB9y2DFEIjv1RbH3Ve2w6yE2Kb+vTXIrrAW3HMDqJHBQmCMO46kDZ2/3yCLuU/ccS8x3urQTEuk2zP

console.dir(app.locals.title)
// => 'My App'

console.dir(app.locals.email)
// => 'me@myapp.com'

Ax9qS+YcSLuyjM/Q4p6zaoA4CPk0r/uUmWDRWNnnVmavZA6G6fvy5xzv7s3MVUgOGydA3FROYFBjX3gBZYlTkkgD5oNGcFCjcggp7qbrwfKyL/ixX2sJmPloZ63o+DgxyttGDrHqE/y15jYRQlzvioc3jrQRa3bIfaxRKNrcos1SL/ElBN1IsOaNIFfIq8yPNj88RSI9B+M2JkHqINe2b6ZntrwzSK3aniiYiynEo5nV2+SCEXT5VMhF1f35bwQam+acU0lMcmGpHJ54QuOda6SKpqTKuYumgznGB5kQzJo=

oSAOFjmSCBvF4NTvNMtl+sYPRaGEyfnhAgLn2I8eKQzqiGLAQNao+yI4xSbqqMyMCRztI1I5ZDBBuihxUEjthhx8WH8DcU2Yj5JdNSYaXcZ8WYkPdV2ln5v1ipfbYDlnCtw0M/N81oRZvdwIAsA633gnrSXSzjBQE/tUc8pvQVjvsJGSGQvGPcafdTEiRUiINifXm3WQq28vAl1Y1eRO9E9da8hjSehKAiQ2E3CHmP0duOWd9LchYQc8A5P93Bq1WKHtFAziqiZnVOEnd2D1biRma9jI8i+bsWDdSRPNIs+P/r2gGKNcoQGweB4Bme278vMzTSAfhGLM/sykSIaWyWN3qsvEte8gvydKIijDjDv7SB30eLYlZJV0OUNMGxVo

app.locals.title = 'My App'
app.locals.strftime = require('strftime')
app.locals.email = 'me@myapp.com'

app.mountpath

mbU3rdZazWPbgRtQ3DW6GCsVZ8FAHtvXIZqRHqkFd/ZgVU5vwG2pA4+pBX/rWg+xsw0o4N07z/5CfxjEKjV2pH7cxOhi+MoK/tVvV7HQ0STcETn0QnsObe8ecY3khakU

vgu4DNFYE7SkHREZE1eh9WW/bQtyS2i33lIDFI6dhHL5QeCREY9u4tPDpRHK4ZHMi5gr+gCClUmZ29P5QoOV0x7+RpBAHb4LgbGYaIkpn57qF+ClIA9d1+Xj/iGpcYyh

var express = require('express')

var app = express() // the main app
var admin = express() // the sub app

admin.get('/', function (req, res) {
  console.log(admin.mountpath) // /admin
  res.send('Admin Homepage')
})

app.use('/admin', admin) // mount the sub app

2vSHb0irvt8NZ077+7zbpciK6WR5MkHehDuyDbMdR6jvarfpwgkTC/XSVHOvmFcliSH6jKU7GUJATBibFN4j3krWNkBg6cC6idlTKJaw1do88JTxM85fKHDVA57n3/eiCqOUHkzWJaB7n4sO14j/QfNc8dDReSBvUbLW7Qfk68AcAAtDCw9tqgckl3MyiCB+o8JzPp+JeXluA9De7h1ppkNsSw3c7aqbsQJAScBn76jyCEAVatmFyNxs//BE6UgriGL524yIHoJ8B0AUCizaxA==

FqooxexjcHvAIMrcmPdmoagzqUu91hbgGnQshUyx/gnTwXcYiVNKo4LwKeoSGABwqY7FsacbztrhBvwosxxzEkdT6ww7CMNIQG2REJ9cRdJgYuxyd3zzWVyIhHbgz2fMf/43K1wfDqppaN6p7Z3WB5/1JOj8oqAUQnsOivjUnfs=

var admin = express()

admin.get('/', function (req, res) {
  console.dir(admin.mountpath) // [ '/adm*n', '/manager' ]
  res.send('Admin Homepage')
})

var secret = express()
secret.get('/', function (req, res) {
  console.log(secret.mountpath) // /secr*t
  res.send('Admin Secret')
})

admin.use('/secr*t', secret) // load the 'secret' router on '/secr*t', on the 'admin' sub app
app.use(['/adm*n', '/manager'], admin) // load the 'admin' router on '/adm*n' and '/manager', on the parent app

app.on('mount', callback(parent))

egYCNdFJcrVtap1YgcrkFA/Bar1KIrqa8at1IzVumi8no6If9zxkgO45yXQOW4Si3Idu47Xep1MfMj3JIWyzA54j4NWoqWO5uzOSrGIleGtDXmwC8uopz2/BUFAhNYjdpvzBLqc96K1p1m+AZS2FpUz16H20Qu/J1pRIV+Wi1uvv+NuOBheujaOQpX8am1lq

owvtOvcIMpE42D8lmAv3CxUMRe2dAb1N1KgucsiOQ7k=

Uz2gO0mZiDlSnpcgeRSX+MWF7O1qkSzVg8secSFh92g=

    yOAMIBK+3ecSUMtLx5BXAyFSMXbyEI6X0PhgOmCDvBMyg2zFsSLHMK/laWxJ1QD0U5sd5bIXfV10jDIym23P7vCJrSeJ7EnIXQtF7RWzDlefxpfb/1G5Ccl1jTO79vLD9sv0OLNsvFFG/hpVqbQvLCy3vlMxETjL8+6G5fenxu7AbTqjf2fqU30MiEOZmY/NAg+LYgyBJqq2wo+AH8mK8w==

HGysLvaNERv/66Kc2aEngPaE+RBMlL62pYmLQTbm/kX3+UdcDKPyUg4tFe+U/PugADWJT1dDn3xaGIjKVTo33hhKMHto3n99Lovr0zHtPfo=

var admin = express()

admin.on('mount', function (parent) {
  console.log('Admin Mounted')
  console.log(parent) // refers to the parent app
})

admin.get('/', function (req, res) {
  res.send('Admin Homepage')
})

app.use('/admin', admin)

app.all(path, callback [, callback ...])

+/XXiY1DYzvsias3B//MJZhByI5uCkjrwqTGZ+rqgyWPj6uMR8qCQlT6B9TvWEMmjQGvsyJ0HfRjdNfJDApmqTpv0jl8pvb+B8RRq20WjtNjldEMajR0M1NNYoU8Zn0GFzYcSpuRL02MJhygkg3Fme5COBycljVsKS7UA4nDfdcIftINB/8dniFkXlDyqjs2YSotIL/QO3xzJD3X0knd0g==

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

示例

+fJQeLUJHjMVKp8F/5JLRMx1R4Kt1iR0lM4EJKo9FsgMoM3Rf+t47+NZ4EN6IxxQV6lfSTeAaNtbZEf2hNQ08t5gk+2Up+Q1fNhqbpDOEy650/YBPbiAeNFXDRyRpDj/8LDlydppptK+wqE6vMyK57RR4uSLsUPan2fQYLirTmc8BbeN2H7CvIFliim5B62g

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

oS2vSgHvWrGmsucoyjOIo8qIH9wwKpxiB5GkYnhjkuezEe8rJyDdeBi0GPYta65OuH7Zrp/fwnuQzc9vGDcE8SQ+GIZyb61KzdY2z2ARgqTJQcspaI+zicAx+n00vEqtFKtyg5FJDGz/5qyKNLQMqZQ+BuyuVF5NG8SOKXkrYcP3APxXs4qjVJMLR3TjRhRi2TD8c0mfOqd9661gAY9bifcQSux0oi8TOru1c9M60mk65lghuJ4Iw9DwKDNfOg3UvK2rUXep6Gm+mDtlLtEfA+V5F8PRH2ELPbAFG30euv/wiNZeFjzWYk0SH9zR1GzBZtMVqzZzRQLNiAZxmWE+imt+sKHAh6MlA8JYyUpa+0tc7sAf+p8O2ZVXPLov4H6S7A4C+c/mGZTGUlLMq3xq8y2j6hDIGfGA3MaSMv3BbsSs1Ix0KmwHTrRbsiD+i0fpd7doDUbHHK3aetKI17JmFnSjk4awnr3s/r+4wIxXZhnOjUtYRU4uO2PuBoxqhCDE1eUupz2H8oSdGRetUDcAN2o2/7IuhF7oWeuy3Eg7tjmH8ymsGXVJh1S5Rmyt5lTq

app.all('*', requireAuthentication, loadUser)

d0hsFNMSPXVcbIB9fIEvKQ==

app.all('*', requireAuthentication)
app.all('*', loadUser)

p2faVbZBSz5b4Z1O0LdqiWftZEF2Nu45zkCXAHsdjuFYWSS65ccNeRNAo2Lv3PRVwp2JkoCD629Mo6M2MHIp6ct3kbUlDUnbL7fIKplpS3Z40YVNBIVUQz3mmle2jd2CljjqeB1FUl4vgSTPuxC55KRf/Gvrox4RMVtf4vypo1qguufOHflAqk6oPZBUqRgG

app.all('/api/*', requireAuthentication)

app.delete(path, callback [, callback ...])

vSIu/DkCDRub1r1pMnzUskRTch/D7Kiy6Jje4Er232l8bjvggWvCxkUq8SrzfcZNf3/9X4jhBcqjbmjXVMKq/1JpXutyR3aqFU8tpQOPKj1l611S+65SBV7QH2g19TdybjFVq3EYuUtEJUrvcyn7O4ByBJ9dvgjJfAwzDgBZHjY1cJ+1DYP0FmF6e1SRaPdW9QF8xYOzCaOiy8YCxfzRK7d9tTX2nWuTeWqHkqD6Ed4=

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

示例

app.delete('/', function (req, res) {
  res.send('DELETE request to homepage')
})

app.disable(name)

zhkDw2wOow+M1Sg/VAAUkL7sbDCPpkDx4yMAnhIH2p3fT3+pzObPZyNB3O/594JzFDd0kndwUTt/n8+Yl16Jqz3pb0Y7bBgk+CNPRvHO8NLkQo2yeQm64p2KPx5aozUJ7dZKPuHO61RVKroyM1wDYLtwdBuSo2roZ2b8JuDWDM7k32BJsBsPkkXyq5NcGN6aUs/9IUcFudqgwuMEkENzE0AWYi3nhjFYB9ZzRgWGrjzza1cslavIrwQN49SBeKv0Q9uHMMWPWxjhWlK26aqsozcTnJVg3kuvfH7A7ONtThv/ZBi4DXnNPLiVxEHJLEg4NkLguJHa6ArxeNe5VT1SiEfMGutOhCaZohKCKFpeO4rul6JQbUzTifcAuQeuj4sN

4h5+3DAGYIrQZh8xCRRFCA==

app.disable('trust proxy')
app.get('trust proxy')
// => false

app.disabled(name)

j56FW4ADeNxiwMq/VQnvn4Ev9pFEAFLi/Slf9hjRKP1Y3hD8CNJTF58p0YZkHPrVxkgFC9IY8wX3z46hPE/1w7H/m6aOEwg75/vAiq39q+BDKfXTzBh7wrr6Z2o+wOJYig+gfogwyZEULeY3/r7tfxab+gIN+/aA/wJN8g/nvuP6ToyHv+1mk4nJ4ixfBIAShMJqvYJTPtU1MKbbKFOTYG/smZY3J03SFri8xwO7oTd6bUy7udzGg53K5Yfoush9to+hevUP9HJcM7WgbBbxjF7sYjaQ5AWWT51yAHMz5/8=

app.disabled('trust proxy')
// => true

app.enable('trust proxy')
app.disabled('trust proxy')
// => false

app.enable(name)

zhkDw2wOow+M1Sg/VAAUkL7sbDCPpkDx4yMAnhIH2p3fT3+pzObPZyNB3O/594JzJmYmk8kVvOTA1j6oRc1dL2O6sv8R55YYVp+EDOfpiire8GTmV5wwbHHO1hOucMc2Ub7Ei7Sk6JiG59U6UH/OYqixJ5fit3EPwzPkRa7QnONltO+6wqmnwrEzoBcRlFx+jWb8J8JwYspNInrP8MYKBIJ/ssarKuPrETT8dgK6Rm/ODudclLWFL1QXn5fDx0LpaweG8PoxZfyK6Zeey8e5E8pLPnO0StCxa2kvvmF1iLg2lZBBxi07nhbbXgRXKMBlncTAX2fSPQ8yntMTh3a7DDpk7JMUnTosrvlsSEEoGH64WrurZJ3dQLCZ9YOe0bTA

app.enable('trust proxy')
app.get('trust proxy')
// => true

app.enabled(name)

G/o8nDPUmvLurNgCLkfwbciR46wmSNVpg+99yf8bOhCBC8corNifU9vzxTULFdLp0LTYOAVEH0dJcira29bx7gv/YzbCKPOjSw2bwXr9JqMs4wNOXwu+X9yIyfnIgI0Ypyh3f+bnMKEbDEAxzcHFSXWd0oFUcI1OpIUw4rREIBJ/f36tm4baaAF9u0qJsTz9elIMNbvAbN93UaE85ZAfzAZy3piFOnkNtZr367KISsdvaUE+QMKO0F+hQ0SaZRu8IptLG9nuwBgIIS5kTSvi/w==

app.enabled('trust proxy')
// => false

app.enable('trust proxy')
app.enabled('trust proxy')
// => true

app.engine(ext, callback)

5Rhmw06gtPT8ZNX0UxEz6DcMT20lY6YKSnzXhkFj8hlu/rP+2yovUOH6xDWSxhXvrIYmSBkqzPwfq0u6neWlLuycdcsqTiRxsh8faYdoado=

DYLORq6DO0eCCJJX1ne2KEeIaz0eDR1byRK5RPrpA/MF3CIEMtkJAOY+E7BGuM58IWHQ/AyJScHtat+pdf+VHB8leXFdB2lB0henhYdHXALlIQ8mbKX5TEQ9MAmgp/tncWBW/7VaES9snw9Tg18wuGeyIxme5HaEQThtvYBcnn4QNirPzr8/o+yHsyj5AIjz+5WWfeuKgyGbRcPypffrfbNuj4atLMleI2WeSK+7THifiXflB/JmZkAJ9CLQ90vdg5VPiw5xvtaX/JLeArpuzw8ZyWLcHWZvgAKOx9bullixct30tWfxiPOQFp60zFKyobGUULKOh/itdDVXCcUGNA==

app.engine('pug', require('pug').__express)

qOGZ/LotvNMs9j2fh1uzhheEFbklz0r6fJ3tZzs0+5qHgxrNELNRUbHLg7Ohjrjc0KbQuZf9vyxKP4jVFO+gnLzCw6RSR9GFT7H0cM1hhvHRgTS4hPAeVCJwSU0/aXvAwQ9kx1/HSDwclchhgeV5cDtrdThrUgHtH3hP86oqcfrwIDOS+qHOy42fBmU3ncqZ1JyrdKqF5wDo9xJ+tHS6zQ==

8SBjIFTbw4jXo5ErbvDqSEjus8BiHQv/6P0g4hgJngz/cWSTBGVuC6nex3niAcuw0EDcay92Xw6UjxagJWRkGw==

app.engine('html', require('ejs').renderFile)

LUhHP9K26A8TlUhi98SRprTyY/HLKei8hgYyt6zp7ADvZM0Mo60E6hJ+4bOgNg4jcTf7ad6H3K96K4m5RIhTK0hCGkVTfPLBgQuG9jP+HPh0f32gJhuGCO5u5h1x6IZJy6DmOFqI00l5knjvrCUY1adXbo+5mbuI++iCoUtN9AupDaDjK3Rcp9QH8egLUvj0WS3TFif1BtjLoTOcLIybyEcIcgzHdytt6y314WBq9WmJEgfJoomKVp6+O51hdpxK6aZZjlExtOB5ZsAHkcJJf1jXWRcd6R1NoBrCzVnuHSt7qbx6A1yizAapep0Ip0aCEb4MuRyXSmtTIdqfZj9q4FPneN4ET0q9asuKMlsN1cqPUn4faoqOxIOBAP1mo1oEYKE0OD8w3+zWKIbh+XR2Bw==

XM1Czn8e5rZu7mj0tp4LbHriXBSzyYINYK3o4hxNYdo9YmjTujjVoMf4IjM6A53Xq1MWNaCemKFjQGgzskyEVtR0A6UQtMu5E0egw3n28HsRcmAw8jftTNrRaFwCsPEaUUdNdNcmIxbPyPaQuips0WeoKb9YATMNAA/vfUjcCszs+3CGt0ZY1nJj9Zctq29BSeOQtrSojO7HTp3MQT+LULaWj+ZiVYwLdsPQlFXH5eKTFkFHGRh0d3muX0RdRpfnQHTJrEoewH5viki2AnDklA==

var engines = require('consolidate')
app.engine('haml', engines.haml)
app.engine('html', engines.hogan)

app.get(name)

MUuwgVoUWLwE4Chx9B1Vj9pf2q3r+7CW2hSKshRIDoE+RVgY8dimxoSx6Pw4P2e0AgFCA4IecNdW9OwGHhbm0SDMtqMXQ9flFGma4O0ImR4o8nmTbCBTe1GX+syJnpYGn0IQxdugtIgHuuAywslUe2crDSjdMYra6CWHZ35h0OlOR9hnTVKebFu9W2OFMZYaamT3jrMHGc70kuOGs+AX7wFOcbJF/i1G7fiXRlha+mM=

app.get('title')
// => undefined

app.set('title', 'My Site')
app.get('title')
// => "My Site"

app.get(path, callback [, callback ...])

vSIu/DkCDRub1r1pMnzUskRTch/D7Kiy6Jje4Er232kVZDix1YVTP86KDz5XjFD8MV9JTyMVN/T2hHzmsEt1jHyw/gSbCZbSwkp5uJSHmUk=

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

Y9pN1fI8Fb4bWt531dL/PgZ63imaIh80jl5gbkv3vW4DoQ+UQcb6OiqlnJGNKVU6uJxjs0DNW5x4rByXoKak/pO+8ZUxP2ZvKuH0+9p/cexKAo+IPV7cY+QBuDLkkSOl

示例

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

app.listen(path, [callback])

Hvc0HnboFwrFSgvIaXdJViOMXFsqr/fTa/ZCZdqmHmq80gw8uopyAqljEl3OoGLhup9pawozMz5NEvfCQ3nFg4sMOlM8ZKvLw6cUQl/uypWqPwqYzoxkRIf3AVwD8TqzIpjTsbeTP9Hnelc7wsjuerYIaq96K7D7sPQdgRbJTIJ3YsHEp3DfsfyyGC3Jz5I0TA7JBFR6CKSjlH//RpcYwoYdFitn3S3BNX6kE4AdD2o=

var express = require('express')
var app = express()
app.listen('/tmp/sock')

app.listen([port[, host[, backlog]]][, callback])

HQSUXOx25BIHUjl0sRUUMNK3ls3Tllyi9UutwQj8rPgYu+F+cC2T1HztqvESbscy7PnD4Cqf/nH+z5GFUWpYWmkLg9llg+KqQq0ncwTMJCznOsLXGn+Dxqm3VdqyTB+k+xgzvWUAue4enMp2kIgHyYtSr2Sgi8TD0pqzS83sq8tx72gd9bnCt2oMxKtmeb2/fXCSss/KHb/Jd9C6ThfNFA==

fyeK2i70qW+bFyIho7oJWUyH5zBXhf8MSedLM7/0va6p1ClttmxyUQzNSQtVrEboccm4n2K+ZarEWxZQ2h38XyP+1j0KxtkcEtbBzfKY+T0khilNXKf9lQ6lFzOz1LldpK1d/YpJrzmEXmJMuL3xFEf23YYlQRyrLwNWBI4YS90pwFwe4KT0rps/WGs4/iRudtbkuonryRUSh0nVRT/SHg==

var express = require('express')
var app = express()
app.listen(3000)

ztlF4MHli8EoDrMgYEHRRzTZael56Ot5A9PArj6puiFqX5M9gFScz3ZV8OItwqMYOewCBjKEvWUj6XlgXZI7NgbHepB57VnijerTt0ZUIwZC9SLbTSf34U0+1wQm93YcGrxg1Ji3gsrpHwS/VmzpPrA/5/aB0y/x9W229YK3m6u63NL7xDYrjbTvUS0XMmH1fBbem3fxu6MqSjuTh7iPxV/bHKyP92MzhMlAjlTnL/JcDECsuEw9LeeCEIJkjKziZLqZ9gEjhY7RbzAzEvixhtRA/GqR06qH3mMv5RxW5WfdLuD543XPHwahH5FS+nRdFpNmSk634ncr5MGC5zdspk1N8s1SIx3h89qzh7hB8S8FCUehIiPei7WHL/McOIxFEdrC6/Rf0uMgzd4wRvoJgK+WAJZ5cTIbTnFO2HX/dzLoM+L9FGfHD8DzKbs0u3Ic3R6ayOPwGo1v1mL8pgNjwQ==

var express = require('express')
var https = require('https')
var http = require('http')
var app = express()

http.createServer(app).listen(80)
https.createServer(options, app).listen(443)

LalYx51d959LvkdIdnaxHkUVh+gGatdQbEh4ebD7P4pAGpQix+MjSfu2lBGgaJ17YiR98su6MzHo+KJ7RZBi97H+Sik0P4qybQazgMQ0Q1J3wklFAEkPptD63AAQI57pO9MACoUGvgAklDNDqwXmo/n3sntLTEgtfpKHubxWcWeJVQxk0N4xmuq9eDwsY8XQ2u9gu8JrCkbe4iLGX2O41P1tKBCg7BxmdWfk8y/66LM=

app.listen = function () {
  var server = http.createServer(this)
  return server.listen.apply(server, arguments)
}

UNUpmwow1g/lqGexKiUoAj6OY5iitQc8Lb99eBmkraiGVscaenj6zC5+MsY+6hcqK7kk4DE2raN7vmeetrv8ukzredVuZHJDEscCQtfMeFmQb/DCBW0liJovqv6QtOJzkodWlT1ZCh1OaNrhfHf6EpvoA3OhZM20SJnqtUASNmsWYyebcjP54m1+Vppwl+wg

app.METHOD(path, callback [, callback ...])

fit31bsL73u2sA3BMi8f+3gmEa6WZcYiF17BAR7levWyUJzoYe9iTUR3hVm4jf61tWS23sEIRuNH3BtFU0r5KKHSKPFePX7XuB72HBU2vR0dmiso5dGrE+RUiapsAXXLa0B4uHnS7SNEa1TbPTiRpTwNdzqUhtP8GgyFKKKoEKlcPw5xuoAFGhceHGsGsE93nVNM3xc2hPe6a9ggwANa2Wc5V7Pdyi5lRPa1jc7p+qS/2jjfiL1+G2tNDcWS9l1WOscicXtiv81/Sss2eanQDcmR5XLOWeqm5cIhsAL7vXt3hcsD0D5iRcSKGafBU1138gv8nZvpaVkCazUBfhBc9z3o7/xgcbgWmd8F85i7DKcOIq9cP6e2LYVAxPIkvhtO7sBcQ8Wq/JvK3zOYaMEeccX0CfL6Ekr3iSGQdP8hXWQ=

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

路由方法

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

app.param([name], callback)

nyxzDN5UQWNFQXsSbSir4RDNbFerQs9f1v/gTT/1jpT05Ks7hp+9tyW36CvOKFVpJGQYJakoEt3KqPx6GS11Om0p+vuPiUxDFbO7AWoO3r1JdC83QctbkLtqfQRy7AEr045wYGdCERy304QdGbSh3KhGp/3aBrFJgDN40t/9sq0Bj2Sn2R0OzVIpULTOBAxj518BMAFXudZmzprVbgqTB60dIbPr1TP7VnFpGPefSCXf6Xyi0VSNW0WBYmEqbPNUM2GXFypD6PB+7YkFdz9tuMc6FflNdAI+XUdqijg0NoiZds0hShHsc7PGjF/sDgLf1EwBvwe1omQ+79yv7XA7zG+9SmZdoNVsVRXOnb7iZluwGRYYnWflYnYPEShZoCDHTCvzKARICoXjAhnex0ltuQ==

FYk4qF+w5f+X7YGxFdgtbwSvTRbWeSkfZ+9jayxm1pg5ws3qCMzX1gYgn1nKNmhixwRlhrAx2DUw9UdXsSHLeHVmQ5fmLKt8qKsVbsI/d8D9GKZGIEHpddfjdzIMNv3DIA8+KSfSlOIh7xsrRHlsWvI+dSBbaFtAYLRXub+Ob3NfjmaDpu8sDsRwqmddfbj0y9mCMSYAAd8tMslfyNJlF4D9fyoPTBRgnXxNOZAvM9YCVWFj48mAnW+xn9pfBOFpuj5V7a+AzQG2xjBBZCjpyDDC2NSfw++lAOc0OROlTBtbpRhedCNCv0l/gAsPjTxF+wOBGztMi6eGvyn13KnDohHyJCNLC2fB0x5x4+sUixjog8XqvvttdotB+wHalK/3nR0MmQG6tRVGX4pIDotDMZuDSN6r7+5bl3WS2S7AH9VvTSKMf7q2mdK/MU9M6J054agv8WnxnuEMEVAI7YK2DKLsf4CY2yav2QJhqwZ7f6WeKIGhFIh/vg89B/smk9hehd3ks3lakhWBMsHyBe8rE4K4LAygyqno7MMls8aEZpeEnZ8b/ssghg/z2is+ZU76B8QU+OsOVQhUt8DgC2s85lYhVEGZZMl+rEqLigwliKzZV3ePOJhRclbpqdHQMrXU

NNq4jit/X+/S+u3JDugnYuUg6Bfk5rCk9piA7UkbVzsMcaalrolHxFS15atSbuOyz/1qSUYiZfmbIbGyIVPBLPG02GmhTGtU4RloVQEzHlY58cZ5NRx6t6yPjV+OCnP2PXNzqWwl2SFKBpA3gJkYznesTP/14aYPWAZIbUNF1qbt6k42e5zZddd7HybrmdK03Amio+94AdXI4nB9nlHuO5VXZ7AVV1MEKne3ZJ+Hi8GKA6KooyTjLRffJzk6k+Xc

app.param('user', function (req, res, next, id) {
  // try to get the user details from the User model and attach it to the request object
  User.find(id, function (err, user) {
    if (err) {
      next(err)
    } else if (user) {
      req.user = user
      next()
    } else {
      next(new Error('failed to load user'))
    }
  })
})

z91LcMAsHMnh1rRKs3re/2ICpxLY2CSGzleV63Fcp1GwXmzHumnH226y0O3JZvxiYbjkcnZTHay1JcKyz81GMr5VpFcAxqhukBXJTZgAk0IR9FLpO1dIzLio/ikmvTMv6gceOasl4sjb7IhQbofGBaZsxs5j/xuMB+V5c5qJX0GgDE/EtWI5ti9Grxg+8p2urbCyejiOqG374725xJOyg9FTU9YXe7M6xpFyh4+gclVENE3wGjGjr3C6d+sWX1lpmg+aJws7xGs8koiI9ja6stJvAkeaFyUzcaTv/poiuXmIdUb/jtjCdcsrMKlG6L3v

4QP1ZYjWv5UaV5pnvOhKF8aZhINVL52o7d3rUv0W10C6OQMcoQBBBgjAouoFk2bJAo89uLCs/2Po7N1tLPuw2p1Erbhb1/1gneAvPn5CLqxS2DoDI5uNkB4Qd/kPLzpG4AvZ++YRcesn6jTNgdNP39TSTKgk6F4bc30N91cQDqN2CJj1QcyR9nMbJcYYfI6pJG72BZfncL5ooxiSegumStSwucwRGy1T0Z0wJdXSWQTM5IzFHrEsfkh+owCvmGJu3RoDYcj/vzq8X+YqVvqRwQ==

app.param('id', function (req, res, next, id) {
  console.log('CALLED ONLY ONCE')
  next()
})

app.get('/user/:id', function (req, res, next) {
  console.log('although this matches')
  next()
})

app.get('/user/:id', function (req, res) {
  console.log('and this matches too')
  res.end()
})

7uW6lhRyP0LBQSvJLxhUkGJyAR8+QWGgC8u336fJALyQDrmFq0zeIxvRLT7Ne7XLL6+LzI7Tjlw8h5YqA2t0hw==

CALLED ONLY ONCE
although this matches
and this matches too
app.param(['id', 'page'], function (req, res, next, value) {
  console.log('CALLED ONLY ONCE with', value)
  next()
})

app.get('/user/:id/:page', function (req, res, next) {
  console.log('although this matches')
  next()
})

app.get('/user/:id/:page', function (req, res) {
  console.log('and this matches too')
  res.end()
})

7uW6lhRyP0LBQSvJLxhUkNGNEzthXHb8JG0J5dshF28fcOoo41VPR6Oh9daD8xWvj1EJv/agcUTx7IG5yXVzog==

CALLED ONLY ONCE with 42
CALLED ONLY ONCE with 3
although this matches
and this matches too

ATnPIV2gVZCff0I+fXkYrNNXfhwwbWBIs3M5y7KQJE7LFUwiEeVMT0FSdE6SQsemnBkFhql/kzXmH/V4py/2ZGebDlp6PBZVtuQu7OeketgFub19P9IHPSEgIdc4BOTW

73M8KAUvkKOl3BAuUR7BtVtrUsvJIDELm0skv7pUJ6oFEJtVw3gX4xfKmxYOobx93E+YnaKRmPcnuEdZgxhU/9RCaUlRRktBhkRYYomdXSfqgA5asDRrjOVIitlWU0PCOGBHaDhJHtyTJmpZMrQVDz5pOf3mfG8cFl40mg5LibLFAE3LUOtFQBsl1tywmmoFwX1fnQq/qFy62xu69umMNs4tmM/7U2S4nRpdlGTVDXBP801v54M5wXsshDOqnyJ29UaL/LZgNYlmRZr8KySiF32SbPx2+AEuC63JmhW7u3IgbzJx938VYctkDzOaRo/psnaVPB0ZXlGXEskvdTe0a8Mnli3pifzqdGvrtCtTaeYi0yJaYlZxuWDhOOS72Svqzv9W28Sp+nZMwI7QdzB/3Q==

aXajA7AlnCXQ64Qyi0em+eTsVubCD0/M4yjF2HwFX/7CRpULbffIdvsu2NnIkqk1aeXbAdU8abrtEqtEhbtw41lVGO2TDCGL3+UzyZZLxdDLVsBINT/Ng618Lso62RSnXfo+Q1ymCnoSWEwY3kZckgDZkyaq0pgBjS61EXMzgZlmo/XStArqhbc8JzVTKhCtihXHA0qcd5AB5OQCgHUv/w==

M4hXj17mRPGMgIisCxtCnjG/A6Oezk6TnDCnwfjv/gTmnK7STftSEkZlcNFFTfNuPEtW1KvOqUH4NIWAERczsP5KaT1CG9D8UrDKBdXOAlI=

DRMIXlnl8U4/6vhwF8zutgrH5MyayHWWiD8MQ7nz06gtnps52/+4OVcnxUvbT6g8WRrjkJabLJbib4ry92Lzue1QcsitMP0z6lpe9FGaIrQ3St7lv7cLRwhurQFm2MGnwrDA4rl8OF1BorGVga0hK7jQAOHnQ0KBfjDuMpppEedaiPLxLaB5pDT0UCUSA+Sq9RKUrOaCNdoZXr1DIFFmHZpt//e2tbVrt1bykKTTuEgVqRqTBym3RDjLVVklFSpQkKGncuaEkl0BNwNTV+c7nOivW13hkEfCCSGLQBWVboU=

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

// customizing the behavior of app.param()
app.param(function (param, option) {
  return function (req, res, next, val) {
    if (val === option) {
      next()
    } else {
      next('route')
    }
  }
})

// using the customized app.param()
app.param('id', 1337)

// route to trigger the capture
app.get('/user/:id', function (req, res) {
  res.send('OK')
})

app.listen(3000, function () {
  console.log('Ready')
})

DRMIXlnl8U4/6vhwF8zutkToDTDZaXWEZjaDZoyKuYnftugSnhUrW3oQQfaTzrXxvi/Qdp9IWp28KJKV1Okl5syTn74x1rhmnTkXpAGM68TTtDP9QXLj6TcBWzFmJ6N0DhGQuyDCAcVJyvTLdG+GYoebREvyslLPozGkPX4iTrJSi0ElWYTTkmuDEy5Kvgg8c9cMdGCa4S39lH+zJdTWMTD2jGHmVu0h/szst7AH1EhG7sgt0dH1yAW+rowmYjAaGawzO1I0p6HSskbIb5Hi9w==

app.param(function (param, validator) {
  return function (req, res, next, val) {
    if (validator(val)) {
      next()
    } else {
      next('route')
    }
  }
})

app.param('id', function (candidate) {
  return !isNaN(parseFloat(candidate)) && isFinite(candidate)
})

reCMpo9TRtWi6uME0GCcq8kiymjR6jWvHwEmM851GeFll9hHzcZSAHZSHPevtAOi8NUTYNPzXjQtnw/Jlib6Iovt0U/wSiI7To/2R5ApCkt0YkWMiESiFAgFDZnMsUhN9VdDgXSB8Ip4+DXcyUdAnbnaUiz8cMVQmvbhKEJHCkVPgy/7AcfZo6qiwG+7KJ4i5jlNwBAg/Jg3N+3UL4x8ab4yzJZLh5/xHrBptNjBGl2jbRfMtrVmE4WDNcQ/L1zmiQjXMufx51d7ZC9zgFlEh7+GptRmcqnScLkUxaVmwVfM5f+QFw+P4pkTmcHGEm5sG96Fl1MSKYxLe1adKtZutv4H6H/VpKZqYc3cd9lr8mM=

vopRh/1iMz2HqU6G50CgWA==

// captures '1-a_6' but not '543-azser-sder'
router.get('/[0-9]+-[[\\w]]*', function (req, res, next) { next() })

// captures '1-a_6' and '543-az(ser"-sder' but not '5-a s'
router.get('/[0-9]+-[[\\S]]*', function (req, res, next) { next() })

// captures all (equivalent to '.*')
router.get('[[\\s\\S]]*', function (req, res, next) { next() })

app.path()

2qi4qownOfxAhm1uQvrHmOL62GmxInajdF9cDqlfORxfgcbm2TL7Yf/bTKj6Fp1BfR7K19nxKAkBq2FdGUapiA==

var app = express()
var blog = express()
var blogAdmin = express()

app.use('/blog', blog)
blog.use('/admin', blogAdmin)

console.dir(app.path()) // ''
console.dir(blog.path()) // '/blog'
console.dir(blogAdmin.path()) // '/blog/admin'

kuPDUh2b8a2kF8rfAcoTzSNJevKu3PaAUOOnwt3gqWK2WA9lVx+2saXUwrphttw5HQ9jGzlasPw9k+oIzUmfp2hSfj5FCXIL02XkGdsJqbq+kDwZEjxIwFJZvgUEdtO4Ca75GldFF9HdM/Fms2PQqFfrPj5WXzrTq5sW+aV6Mpupw0VblPsF5y5de0betE3ic06VKcB+PMsgr6ZC4k2Zgc0mK5+VkYM2pjclcHvfdoWxqxV2ht3TYxO0iWBwPELXRaLf0i4RgzxMfY7pzRKB2A==

app.post(path, callback [, callback ...])

vSIu/DkCDRub1r1pMnzUskRTch/D7Kiy6Jje4Er232mnrzx4w/KI6h47aJpkNBUFEz5c1V+RmUWP2JX3KahqQcfVZTtQ0je693ZjvtbvycLBAQHzBxeUB3Yc0uUGKmBu/aNtTvPx4MCNAnqVQhgYTn7YMOvT9NTm2wzw/KuDGE2azti6GQLzRnJedLl/OVEYCefzkoPDIIZz1FcoNBnhRRksevfAvmxxRf+6coiNV7M=

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

示例

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

app.put(path, callback [, callback ...])

vSIu/DkCDRub1r1pMnzUskRTch/D7Kiy6Jje4Er232mH/sw3UGT1PLc1Z/zpnQAhmEtDgoYr535B4mXClx34Zoc2Jy+Tz77hO7ntwOje8/A=

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

示例

app.put('/', function (req, res) {
  res.send('PUT request to homepage')
})

app.render(view, [locals], callback)

SiJp1jrW6q8tF+/Ch6KlQhQZ3IAFBOxZEmjLRWDE8rp2rkrxhubLCkHR5KpwQLg0hOuqirikjUa9UP5AufuxU0NuaBUjQU5YfemHJztJIfUTtSaYLE0Zlo6FSENxWzJH131bmzKuYvA5LV9sXaE5zER5XF7GirRnFjgTTBsUwqcgPNk9ddG5ySIEXPiJzQeSiDwp/jqnXF2Deu1KK6wauun1NxcFht7vtNm1vryHf0PFZTVvJqQHTLzkmNqGUnm3RftX/QhtWl8BP1FypBYSVD6YTGqkwU0WDHf71MJFNMdCQziMezfPTURnJYBuAlS7BZXLzjA/ZO0p3//kLH8RPfSl3xflZ/v+dZWR3uKnmGOoaQoCPAnB5aDFx7qHvgwx

9W3t8Mcc7YIuwVCI4AG7CvGaf4/k60opMUC2p0ze0jqx0wMcmW/EtMijr1FEEfWGlha2LMx0u0e+0hROElbBWuvJQPvTEblt9GpW0P5hXIFLtZwmzMgB0oeUsjq+e2BXcb+ui6k89t//GUeI71RZBdhWDeO/PO9ZVP1LDBP9HMl5z6kc+tSTFSzuf+7gxR51FA1YufcZvbHLmfTa/Hu0AGHzQeWAydhqAf8I8I7r9UE=

MvTJ25YK37i7y3NdWv5m4N8Hm8q67MfP0399AaCpPMzDsgdu5vKKPFIUkZkYrNd0sTjLhhuAosYG3cNC9dpqiGyLggQG1QPqCJSKQEi1+CFEPfi5AGwHHZti0McYDPhBfimBUQcxBfp5ZOl913E05rO7gTTucDIex6yX8frDyB7eommok/X0iCBNp41mS7sA00TKmvQxFbldgcWJEx1bNrGsLOe4dqMviDMDDBjR0v+SquInVOvFIHE/wGSS2/bl

app.render('email', function (err, html) {
  // ...
})

app.render('email', { name: 'Tobi' }, function (err, html) {
  // ...
})

app.route(path)

h/Jo+7oez+c0kllCdYoTPXDeSgxvpnaTrq3A0AKX00K8O4pzcC1idcIwn1PYxndROH1p9/JHA+A/s2H8wKldbvFFZmN7mikjRs939z7ShCtoGkHjJJG6aIGnhnnynJVKKgO5WQZ0SOm1c1ib8NoX4UrS8kQNHpzGD7YYQOTUP7459X316B8+E073O5wQM1stbWWUYOnNvHjxFnYdxcIQBPSAGnPLxGUhzBbFhw/bwTdlTt+xvVhoApWo3NrjuFZqn53nUUMs8oW56g5p/5KL+A==

var app = express()

app.route('/events')
  .all(function (req, res, next) {
    // runs for all HTTP verbs first
    // think of it as route specific middleware!
  })
  .get(function (req, res, next) {
    res.json({})
  })
  .post(function (req, res, next) {
    // maybe add a new event...
  })

app.set(name, value)

03eyAeQ3C7q2+6T5hdZLUdo93KhCvEBmPiCeyoSW1RDrUwfl7mPVYaiFwyvkLo/Dx9urdzwqP2qncIS88UroJH9/LT1LA8iR9SAlCRy36Iz5dHb/h44+RpUGnvsjtg+UXfQUwHgsxiY1QurPo11uL/lon4mF6FTox17cBTVikNqTY1J5NVq0jBvQMP+4p9SvswGXoCf6K2hGPpZtxFRiodHmdwEYiJ/DneOZICN9Jcn32ItzbakgyPrXi2V9zuJ5Ib5Dzaz9Ft8j/B9bSJsrJSJyB7x/xuCXK+RJYT+y/TLFf3UG0T05Z50XrGpXJ5BPQ2fRSWqcybgRuhnhxZfiiw==

kzRy0X3TeKj0uZSqyHxq3BJRqwOodHCqqJ7p4antIO6bJLEVG0ewjseC8VHT2TtrvBoYjJRhVf4LYfIObSfJvBAzG7po0i3ePZY1nmSkbdTYBAL/JTboeRSXlmWqOkDMzrxVVzXVgy+Lfx7OJegX40ln1MoUx1g3l/12pvZGdaRKS/pbwFMN+vvr5n4bQaiuSiG+HFC0GoJqggn/tM3/NGXxWx+vWzPVPTFnbSL3jVVcbQV5R0jjORrWrko/3AenyVYBN8YMuocNMv1pxQwmQPdmYUCjyyQyirY8nNNMr3A=

BpDIkXRUnkPiBz8iBceshJnvH2ABJ/VVX8C3zc4toPqM82fTOb/93mYrMPInXZgGM+Ii6bycHhXgV+mGo9QJi5huB6loAvW/FYBtJqjcO74hpTGT+xSQmMQgSqc2HUL8zlNPL7q9Q2WBXMAEFhkFBg==

app.set('title', 'My Site')
app.get('title') // "My Site"

应用程序设置

cnddn6JuCsPJDzcs3isJJXfb4cwLDqWV1e659kNedSeqZOU/MNrw8b9Kfw96y8wh

9078NL4ukdNczH5amalvB21nDP+T7fg5CJG0irlOfTIuU6FHEx3O9+If6sugvEdH

    yOAMIBK+3ecSUMtLx5BXAyFSMXbyEI6X0PhgOmCDvBMyg2zFsSLHMK/laWxJ1QD0U5sd5bIXfV10jDIym23P7vCJrSeJ7EnIXQtF7RWzDlefxpfb/1G5Ccl1jTO79vLD9sv0OLNsvFFG/hpVqbQvLCy3vlMxETjL8+6G5fenxu6F/wdHPAIGk/DowcCQMQ6IlVaGp4QRl3wFTJCc//NFZFvxCD7Z/tCwXd0iwYR3pziYwSSkeNzmmUqa2gW7MxSS

bo4VtWuK5MCJ5Yk3JotK0TOBoASonLhBgwGSpVVV8HU43iUuHWQmuEOHynawuUq6GSMAi+qVVm2uzoombRv5F2iWtLRiinGEZStDZsjJ0x+AMSDe4nq8ZwupIftAI6rmSAKTPNoQOiLETNKvmiwVziUg6uqfybkceDiPvXlBFNA0U+1YnVtLeK6/5UqYAjVKP0mqtRk0TI2tpbRAftVBToLOwvXxhL+CGdvnCa7E7r9qeC+16bAUzPyNn2J17w+DP3Mpfv0pSAjWqYFNxbg7GSf9lz2WQFJR1DTwLVrFtGxZHaMD3BBMc7s3nHE0BaX+

属性类型描述默认

EC9tJC3bDSAcZUKfG28Kdkc9SwUTTRN9vCnpKl27dMdIFBZQBs2kUWlmu3D9lRMS

DOR2QRXgx8wfNG1cTUlsIg==

2CdHFLg6TzIkGr0GgQ/yvAjiFsX2Jfga2vHb1mHRfPELhAeYEA1lDmXuWwgYcDJCHef+NULza444UGrLsxB8MY5PbIvnGD/JZwKjjuTkZALo/l3qXh+n1TBOkfbISg5qCA6XLLb/rh+dF8N6G7BMmVAgRrLjO2i44RYYTuFcdoc=

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdUDZ0hsgf4KzhFlGujh8RRw==

ZocgEi/ocIcksOjhCGRmCg==

Wbql4Q3pL2D9oUAt0aoxha/nalaIq6YTF1+AJgsrk7k=

2pFFOjb3tPhnVCDGtEnBpQ==

+MHKxC7h4hcZJ/dauYOuJMgO4Vo5SsqolXXJ2CCZlgBqbnvAuWSk+UzY3OTP3/rKEHUQSnwUolDEme5OcKF9EQ+nTuLTqEaX9iT4U0Pb4m9eZrPWAWe163ueYbn1kVDkAhbASc6KdytTR7OFFjeXxk33rjkYRESH//n/anTzQOOtZQURX6TU/xy8ZGe59NBP8MGn4FmtDGGJiqdCpE+BkQ==

7+bbEDvfShE17G80GR7A+a0vONJZWrcwmH71Wo2hZ4HP+WTef/4JRKBPDWwdChl+FFAtGAhJJy3PJWhNZ+yvsigpqdqwHO4Ep7ViUgCCrhYlo0nLwX0mVUoGPtxSJnzFDVggMmHporauAyw99KX6iageamotKnsGcJoz8YGoGjOGh06gWYcCRXKG31ZfcodG

LUbeB2usipF6/bsExO/1ZNk85M5KdQ1fGtE02a0QUDI=

qTgovRuW1m3S8qtTAvLubA==

Nb/jYvZEb8pI63zr5qn9TLippOF1vpGGfZsYUM8tR07JGPF3/M1tnwP8EwOaln1FG0x5+bb4Bq9HYAhC42EUjk6/VEEWrNg28L6og0YEwvxh4B77TLNbnJx184Pkkvu8HQI4Sug61540CUouBbCjVoUfDXEctWgcxIw3aD43qRLJdHxzuVc5kA/Rcv+KJ4zL

6ykdjyyUd8ipnGEYGmLSyeWs2FAxfVbII6WYqeNBlhMS9CdqPzA4YXaGP/82uxzBj3vg4Biv2TXG6cSUGFWqZ0zdYw5FHcT/3ZQEjSRf2DUm9K6IlmBE43atTrJBL4jM

ArF+7ezFGGlTo+61aSXAABHRCsek6Y0OTyxpwy0POJg=

fsDmVzRaDjsN0IroKmU4sCvlEDWlx0vsGF1v5pF1cRXTau3Zv8ZbmJiphqLnyOyW

2pFFOjb3tPhnVCDGtEnBpQ==

P06UvwLHincK63RewP0IUJxDcEA/3rMLCtkfTHqWXFlG4XEkX7lH4ab1DDIo3FKe

M0PsF0TcQB9GfPHgg8WjAg==

pisql7P8Vf2EGY8g9MQSLWDgJGfP4tGjsXMBuTKRKpA=

DOR2QRXgx8wfNG1cTUlsIg==

tRjl1FRtGSxPaN139qRHIHJtWibDhGy0z0NkPehyKUslKA3WMVD5P4tqSsdRwnbJVs1r75ABE8RThLQC33R3JlT8CCR7AIIR5iS05qaLtJ8yDFSKOfgwRK7fH5fbchWC5XiJfpJkQzOdsiYLS3TpiUFfjJOPMbrnEyd1KkqcG24OjvIhB4SuvPL+1prcwEztD53WBJ+p/T+junpYUqs7QNGkjgnWizXpaoD6uHeagmqYUVAtwjyjfNr1CXLrs7OcWib00ZiuWEJwmOFCAv68S+A2bPPb+nZJDEtTVth4p1Mxcg4lfVdeBPFq/zWUf6G279IbgPpu2EdLcFx271hCX0pWEb0arJqbevzMYnW9aMOoccl8thRjCNjqytVVf2pAM5FmY+Pr7g95TeJZKBRvcerihlNmETdhIIWumZSkESviAaOjB9Xv0/uWVId+ZQ8/ggnMZU+kG5qFHbQ4veU4nWbhLc7zoGBtsfHaZtqbgstu4ap3R5B8QPQX4HmBcOHt3pcisrWdvzbKirGa7EHBZw==

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdUDZ0hsgf4KzhFlGujh8RRw==

ZocgEi/ocIcksOjhCGRmCg==

KN9+rB/QPMcyE0n0ez8UBMnOh0lSrYnNEWg+bJ0/Nfw=

qTgovRuW1m3S8qtTAvLubA==

ux5jPFaC6+6UYSFs8YevWEO197v4M4nvodCKJri4iljxnK0ZsyPt2tQNv66zV1KmeaZHnRhdjQjRsrij2yNXn8ma7os4fMQEzePiVK1bup1OWXul8gMq0EA3TigcJkjAboF+zDvRmIadA1MaTbrznA==

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdUDZ0hsgf4KzhFlGujh8RRw==

ZocgEi/ocIcksOjhCGRmCg==

Xvsjls5zjWzvuLEXIl5dyqjSnz22WS9Xgr8OzVMBaZs=

qTgovRuW1m3S8qtTAvLubA==

xIxfSKYRXInyQ6urla/4/PcIW3CjtACsPqx/kWreS3YlUHCkQogI5zcpIiS3wvLeF8ofPgTkdigO9IF09zuI6bhgl+9N7kdx4AVwuh5D+bDHG1VGcw1uDRVexmCYOXxpPnHkQPkomj3nPJItJ8OenDyqHMiu7ILvDosO4lL4cdNlJ12A1wg9iebD/Z2sAJajJqu+CUaXz2O3rLwKtK1TQwPy5kQ0iLbkxf0yr0xLL1s=

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdUDZ0hsgf4KzhFlGujh8RRw==

ZocgEi/ocIcksOjhCGRmCg==

VK0hyD3U9G4MroNimUcZmYys2lbReN1c5ZkFAkuQGXI=

qTgovRuW1m3S8qtTAvLubA==

k6ha4KZEgOm4mN11t/NYMnb8GoxABmdnsYJbW3R7rJ1Uf4ysy4Y5dyYa1N6HRHa/pdvyrQkyK98YzznWVk2phuZGl2fw/j7t6QGIoSvSWIiftomrRk9KjvY0+oNAqBZsEYVVCKEicpLBklZzVhFqnEdg+8IVTnt/SKepL4TvcMSKZfPOAHQHcpAYCxaO9m+diUfr8Bqdl1JwnuN/EsA0LHoEj8K6/fHCzAnS4gn/ZTg=

wJ0a6jk5ZCXUvyx7/ypGYMZPtl/nxhc3gMJuY8sqkhqEiprsFMlJ+TsckC5OLvfnKRzLs+Z/5eMmeTabwK4ISrTJFxRM+qx0rXNThTGdmGsTifrgFM/H5DTQuZffyk2q93n6i3RKSmiukxn9US2Si0NUoEDsBBODPDhz4ROxFo0=

x9+HfRHZXWo5SAAo2PcZrrJtZNsiQJJtzRgvO9UHhak8WPlVIIqSyiNijOUzgAbTukLvmeqbvOPmEQEDsMxeCfDjBEJYCyUyDju+9WA270q2eYCxC8arCEhq6OvvnQmF

cedGoRanZF90oPcF3zYedfyCxAdA2y5kpEbwl6bZ6GjMvhY+xUm6GnqGS3rcprvgMMXchDBw82xbCZpUWZz2qf/nIlFa3UUfieSIGzo/l1e4U0RI4MyAhzl6VWh+T6mCNMPOvlP6/g70JQAI0GENCoVXaU+W3iLLcG23gq5WYkw=

gxjHmR/USunSf8W7QpIQfw==

o3LdIv0+Nw4RGrEC18fHm/+rmoWkRFOnBYCzGUlDaxU=

DOR2QRXgx8wfNG1cTUlsIg==

Q1+HESm4ggJL1vU+SUT16TuQPxSLGWpMODXa0XsyrDif7BtBlZBMhP8jvMh6RMxEez59s1BWm4x2pPAllUPfGv13lEfKRSMhEVVjnz+CsyZJcVCwnSgU9Tjs4fCpPguEj23TLJ88dELN9H2ftlpEOfQB4GLJeaOjlwp92IJzCHIhY2huRMNX25ZVZvwcO2r0

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdUDZ0hsgf4KzhFlGujh8RRw==

ovlOUDInOrNcHHU9XL3FwmJlTt6lrfDELDM9vt0NJ/A=

dZOOcJTsjT3vgSAi4tNcbWUnGdT5AkN6zxXuXZXiZBU=

swDA9/o5ezDPfPZFpjqrqg==

/I640Zqecs+BaWZkUBSVAuKju8/8JTGCz0DPJu1AkB3TWS5kSm8A6inJ3eqctnwmx5QjrLc0p3fbn2XoyqbqUg==

hu1FtLV7QDnX6H5tDtfhow==

YNrlvSjDj3Osza1fw7FZSxRpmrMW+EqObv5pYWQHzDc=

qTgovRuW1m3S8qtTAvLubA==

2IoXfMI0pR03y7wRTxB0IfcMXPy7NV28hnHwFCjTWgDpabvfEjVtiRRtudaSV+wNbzGIFf6ujRpFfqupw+C5vuc9LU6jLPQDwptGWkN3RKbPztLs1ken5UwrziZkKzyCJj9WXVI1vJzX+hdsuyo/GblS0IvwS4wZP/wFSsuNkghWafP1+32LD3jPptCX7sTQy6s3udaN8a8kgSs2y15z/3pD/YwCzRsqUXmA18WQ7n5twXGBAwvv4Wrjgbn+vtE1vo6R2RT0qXPNNvAF9jwKBXign7j22Q/ayLHyVv9PByqVsrU04vPemmCU4lRjVZmy

s/VWzEftXrNyey7KEalSERtofTndgcZCAOnEnMjFdlKGB9t/23u1WJ02vphYBpHEZBz993YBawJauiPfPpKARlSDg9troQretfKP/5l9empnPpG1cfH7QQ82lpRILJXnle98OEg8hy9LHj93LoumFXsQCtmGnE9sQlZPX8tgR+itEBqMa4ApXw/5bIZM0FXEIejdJGVdI4CKEW6T33bEiykXJN01j4ktTgxH/6akotk38P6SnRTuOQIEPD4e26zQbPQaAzW4kf24x4w2GxsO4o3j/ChgHrj4+QMGEQe8QQYxvmreffpW9fHTQAO+M5zox2ElHarWE4YMH122AnvJvNJG/dJiysCrswGTaMjkE2G2woqNTDIrVbQh669cz7/pjS+21c/WUeZj1erES3CxlHFplNBB0sAUsS+1PwWdiEg=

tmYd9yQ3JEn5PnnjXFsmcarXIKOLQp4x1In9J7zhweZAZX9U2xA3x1saEPqA3wLW6LpChEIBMZGwX8+JdK4d3VTBCaFjSvZEbR18IxLJgrC3U0CyYDUjAZgooqheatBMxtum71frRtauhTOKyVQbKcgMLwY/q8nid76tkTWRgmn0gsCRLd7+z5QOYHHF7a49bV78cjYZkyysLqOUTzWRhfBweeeNe0Wg6HLKXG5jdYQ=

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdVtxQFMR//v6OK1kLOrgM8Fpac/rPhOwyIfQKq6u3JmswYyqz/g1b5Erjq2kEW82g

+ys/CcC7pH1rdba6Pyh1llnfL321Z94pkFyR7aL34aGsH5o147/IToOrohX+5OKF

AOMKocFoc5/rnkaRi38onsyrHRSfgIyNTD78NywIuTE=

vG1gQw2Wb+6gOn6mM6+nGsy/MIPYgQGdzmbj8zE9QsA=

eDNCh1eeqd20z/hJEH+Swh2ubYicpb1m1tFIPpUkN+f7afVEFfvpvRN2+vPjnf6PCvQUfXkcZkIcPkiTsOnGuXVeB0W3lbKXxYNvc/jIBELPoWfmLYXh+njLE+rBPQoNtD8veFNg+hiLFo0Togd+zghPjGMutfKBAkbmIlgC3jk=

pT7p5iiw8LJenQJZE+ArMeWIZXP++RxsnAZL2R4rmrzQwmQ+ojepOP40esetx9PA

45QCTusV8L30l/OBtiqg66vdHKIBwz+ptZLnjp3Y2K0=

DOR2QRXgx8wfNG1cTUlsIg==

9QP+AZvCMfA41LakepCxHMqoyHEqdaex3np4zcvjO35a49KnLf79ywh61bgnnj2b

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/Z8zoeHl/gjecGqQvVqaMTfax+5HGD8dJ47DWXzg5UJ46xMHSjOXiZDLgk3Wbrwh/n9Y8EF0YvojijQOYJJWhwrsPNURwX++pwXu/wjPi3ODa9lNL9sAZtJHOULUxywimOxm/BJqslSbJQmLhnD4ac7

exHuhNXeMh4fPO2aU6Xd1PBXePsBqfxaVTvJv9ti5Qw9toAD624/5e1GXET1g6PV7fHqKx+KIOYI8ft5tcVmLw==

pta81grxUutfQ5rLOXkJ5t6QtGqfjAboW9BWnHmbZ6c=

2pFFOjb3tPhnVCDGtEnBpQ==

SX8OwQFhZdgXFjIkbj8GESqA3lg5tk7v6qAYp549XF795AYfOHNCXy9DEnoepKuO

owvtOvcIMpE42D8lmAv3C+/S3LNmjJyweX8OBSQLp/bCDDOOWDw4ZbxLKhBE4EXdUDZ0hsgf4KzhFlGujh8RRw==

ZocgEi/ocIcksOjhCGRmCg==

rx5NMfjhLqiwarn+WL4FdqZgBsps6nfeesz9GpJxQBQ=

DOR2QRXgx8wfNG1cTUlsIg==

pgR6NH4G5hP5vLp5zBwAibRewvjwFyqDN57fVwYFTGQUX4wIZe2Lk+g/crnp2pup

exHuhNXeMh4fPO2aU6Xd1NHJS9Lr8aC/j0UZnaCHWsM=

trust proxy 设置选项

e5+OzksfHUq7dHzmxaa5cgxPm7AMcInXynjLX7NAgPVJjxxsEy0AI3l8JcNDcQL3nmONTbbRzX94R70Hkc2owISRFmT3vNsMOugTRlBk0eZlHAaKNqMXXN4vkAXe1jZeI2Hi1QyvI+pLyxPS6nRNEQ==

类型

DOR2QRXgx8wfNG1cTUlsIg==

uHMVTgH+3yOwWZXF9Nosd92vELu1itUpKaDLRjCwqruTxLpRh+U/V76jGamuHOh/ONyn1tOX10XiVzZolwWKyxQHyr7zQyRSnc/0OTjhsPjG3FwFimv2qoHMHIwYl/Rqx/kE6I90qZngidpF/vZlgmWCFpaGKnR3j7buiHfE+/4=

M787k8/32SvWJ6HS4hhNWq+vgq/caXCpOx+HKBOpj+tX6IHOQQSz+sIFaTtT5oRGJqEGyCxJHTPmmkP0hmGVJhO45bwsYsyXocsgWb5L7t9qtB2JkeXD+zBz7b1kb6xcB30Gt2sWrKpeACD62uEwOq3OJTvoQtn3ls1UVavr94c2jhDqbdy9l9tWA+UqJBF4LA3oGLfcbRX9eXhrRtfpIEx+G7eiq3dqtANAc+dhXow=

z7rBhY1DLLTczvyJSZkkyzzV7DZzpLrfFQAGmmUvGer3c/jQ690mtMwHZI+y7uqd7ud08tFFjYrNQtEtIyzRwaIUJlAWKTyn9A888ROdbZA=

Tqh0/PMjwAVgowg1DDTni8aURFvTEP7KUMyGQKUoq12f1HLoBXtaBkIDj78gWVLqBHQy6OIu/yr09wNX50ix0OkZ5kxeSfpFL5OPQ6dIaxJcfDNL9C+yF0jtIc2WsSjm

    jlwRVNFL8cC6LzMHLefifDZbMXebzjfXWYJes0UWSJtiEaAIPszsSsiflq9fe4qKyA/an3qQ6qmA7Z5LqqmVdh0qbqhMvPXa/R5juaMdJR28SmTL41CBx3FIz6qGTpBwR2bmS9f69ymuq2j1Pql93i9Lt2WjcxsNSIdUSIpcBZcpZOM88pGrckSsPeEWkOK33T3WeJ2zOuxYIU0vETe02IbRNeFSzRsTMVZ/lhI+ezQTH+d8H9m4pXpUo0WcmNVOiK1TZMpo///n/zYnWyP24tvoJXdOTKGV//8d5mdre2uwQBjo8qq6xc/uV+OhhpNyq8y+mVUZgAsaw2K0LueaE9FnxFEB77KaTpdBFjIRz5JG3EWex0zxMj4Mk2rtMkqx

wY92oycgLu1EoPE2l+RiPcRQsF2uuno9jnFM+RvxzTUjTIMjjj1/L+NU7rbGFQuY

H5nwSzw86ou4G3QLyZM3RScy/F4gUWjd2g5svEWMrlg=

app.set('trust proxy', 'loopback')

SeEee7imECXyuE1DiboqUEaqDOKZm+GHhsd3jljlIBg=

app.set('trust proxy', 'loopback, 123.123.123.123')

2nB25VujIN9N9JnnzGB85CgN6ESMHZwxMfOXtXe04e4=

app.set('trust proxy', 'loopback, linklocal, uniquelocal')

2nB25VujIN9N9JnnzGB85C7tCn5mYpg5GgbB1XEuBoU4MEwq7/sAcUfYH/uTpEFG

app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal'])

U7qQHj0mIKc8Yv7vazVdWrQMLUhO+AkfLXG920EDDrtVqO/uHJrzQFolwgCKxZsNYRAJEWaA2j3OXPpyy+Trqv0YoubiXdafwhsXvNPFo9AK2050qD+BP17THaxOgnB4MWw+RQKrcMzgvLoRSajoFJAk35eWvQYs8hwSS5NS01DXkcQgkCGM1+Qdo6jH70haN3aF/6G59wz2LW6iGbjulLfks71M32PEr1XQmOsO0Ig=

swDA9/o5ezDPfPZFpjqrqg==

KIwIN+itQ9pAXnxsHQPNrBs39EdjjdDJbC3tZXP+NcMwXGWvM2re3qjFCabyI8amaGpkn4v5dbuVEkRbifhgTKrlLyHFxP1PmcBFn8C62vM=

ZIMWeq18fWNOkkl47Go57g==

ipNlnyAsaMpMASng2KwcTPJIhmskDXYBu7pcqBHiLzxe3h/H4FtEXML4I/JCC0lYVt1w85dJHpcLPTOAX25qpBVZqracFKNZqJ1BgQYK3NI=

app.set('trust proxy', function (ip) {
  if (ip === '127.0.0.1' || ip === '123.123.123.123') return true // trusted IPs
  else return false
})

etag 设置选项

owvtOvcIMpE42D8lmAv3Cy1uVZRZPyL5ZgBR8OB/5OBA/vYBnNPQjluffXFwQVA4CRuAgY9GoaTXMOMgs2MoBKWi73DhYC3xYzny5KaVE4QRkaKar1LNVghVypXqxyoJJodnXMHvPWcpVP5jHqESe7RYbb55ccB3rD31EWbzGO2LV4KYtpUMC5+9VHSOPX4nsCr5OWPV4HOxwC0/KeaKWG+ouYB2QuGEDClKpNHsvkK22aNQlw0/WZXK3IT4SIhp

nQeAg3mW3g0e3zCHedNWE82ar3w9iIAgDmxguAJrL60TznJZLdokGSsBL1xch76CYcXUL6/HCoPaAvfS6Z2jsvxv0dDWietIV8k6jTxUoC3iVrxmPsHVhv+DJtwTvJPaBd0oebbujcYifCPHKaW9Up2DGgutKFO2qOOiAJA60UvC8rT8dcUlsnPX2qDH4Vd6

类型

DOR2QRXgx8wfNG1cTUlsIg==

exHuhNXeMh4fPO2aU6Xd1E/+zRD06vxPKfyJoUiVU2O2NSx1889hyTmrEUBGkFvGPpDL90701XmUNljdDtRf7tZCf0c34q28X45DUGBNs+BoVOOtXbRNIem4xDMPt1KK

2pFFOjb3tPhnVCDGtEnBpQ==

+dA+IPyyuG7xfVGYIZ4K21JYndh5WfdNh1NDd8+fF0D2JqvKpnjXudnYTs11BaPjb6FBkElQr1rzRJnTRjb4V4oDV2QPucOu5As8OPTtn0I=

ZIMWeq18fWNOkkl47Go57g==

vYrEiqEIxgPrCgCsTvLayykaKSwO8rb03XWIDYB0V23op/ogx/T+9aEt13508klEEVqBPfcnPaKMM9MgQI87+7GnyH2SyxbBQ/RmImZnifTv906uUn4AJ/yYkt7kKqqE

app.set('etag', function (body, encoding) {
  return generateHash(body, encoding) // consider the function is defined
})

app.use([path,] callback [, callback...])

T+agrlA80z75NfZyO8RcNy/2PsSuy8n6RU59EkqM4SOVMS6mIQuD5ZAcI1d2o7Dt8bA4qUV+xNgS2eAcZjiRV1doJu9dTEWxgjugkt7f3hUpNQxgdd8DGjaWYIcrKPZSp8zhZKN84Uy3qE9Gv5Ed4r/+bul4bZnww1m3/S/VfzQ8WZoavRv7ARy5JU4SrCNSKw+ibafgKDCtqySBBpjJ4iMhFLCj/kSwMTQv0PSJ6Iw4NVPulebDR2tydDCQQzU7

参数

参数描述默认

6wjdVYsEjSa8IGuw042kzuKypTaxXUt7hgt6Zpq2zdI=

+t99wXKqoA6rP45dm7o/WNsh88aFzzWkOp0NaQNWv22V/0oI9cmwuv1CqCDpOTCNpuklYGFjI4wtwPQChA/4Ew==

    NZHGGXZEj485dPuoZra93Y0uGuoKYb0KOiUkLN6x2VVewYVM5vuBAXy+00qlZJocTnI6IyMFlercYOYFhyZXDuMlax+fffHjOdE5S5lOUyPUwyhG0df8GOyA0jV0xzZ49Vn4ZPl+5yAE+njZCaWLQB/dWw7hqANmADquA+eBrnNCB5MtjXFieGu91JyesJ1YQ2W+tc22k1zENYafwu+uEjP7QZc7HEj08w8eRrP72yZUJVtoo0brmE6dP/aYxzRvrudIfYhk9EDQd7bqJIushA==

nmISikPIeKFk+B/psi+9xQcyM669bT9O1SMkPLltF6raeo4YdwJZBX9hrxufhTZlB5CAeLRba6ZRj4yKIE4HxY2L/jaYM+gb/zqj186lpfETv3GSoZatJ79IkhmUmPVl

0HoW4ou6G5Zm1xqrFgWuLTj1Y9e6jc4+LU7qrg3fF5s=

SJjP3FVBAp/5qgyN+uBoErKxvix5hBT0FSs13dl621Q=

01SjbF6hoeZh5npOrJScYUc+CUOTpE5q4w2C4HkZ0pA=

    lcdzebVX6MvZmlXzIF2Ijd7xDA51r2Ka8vRWR3GATl1aRoWoNAs45/ec86VHSgWp2lXqy4YTT9ZHcXx6ibj+ddnNXp7HqpGsEK3a1jAky1dlv7qrhfs1oEzx4n3FUF8pMN2e07t5ZEYqUMw9a6decDW5cpQkAjTQQid8UJUHLJoyDhWOmK2dTjnMwrLoKjbBLTDVM96yi7tXUR6eWQS4BnNobCH6XkNtcoVID+BAYvW6TfdrdNrGH88DH84HaiLETntgYyaEDOkr0AZmKQIbPw==

qi6u0anog8Yl/IdZdO4HlrtM8sfGoxIpXuJCv9QQxMcY2KMPexwj7/+xBuPW8n5tGmKAt/0e+JkD+DjyGTalI/593sZjtC+FDp9KiB3Z/reUxR7wYWWEjJjO80RbrOD4nleOsEM4zSqzsR4bqtSRwqBB/vvbGv0x+bSDPHkFACoszDsunlDq6QzAW7x+yXiiWQuhtNlGyvwxaHGbabAJ0DAV7Zf+gpojYgPiuRP3IYPKEIrmescCmScz4AZvhzKSHvJInLfYgKEqNpO9sl6uNlABTBUeokOTASXwd+y7WfF3qejg8GYMtU3pf3Y7FHt6H8mRyxW0JeCltm+fp9IPFXOe4nnkpEzxsHbIplA8B4NX0NWNrMqyDtqIJP/hYPfmuTlhv8bFLRzaO7S/qGynUw==

u9V5WTTiyuyZGMS/0XFX0L0WcaRbH6MbDsLpbJuv8c6pUsQyyBntHfkZxrdw/7HJ0u5hgzqZGSjbr86gY+CuZxN1DzBB2eskJ4at7ipKpb3qZx23T+VW6k1KA/6v0OZzIqVaRRcBMeeGC50SRoeyaB3UuBzv9OoS/alPn6fazVz+z7+z1gLknION/NkpCJkexReFNJu2/fjNnnxqDm99u1/Qk2G3qi32GiS23c8dqFnGzuI1M/vUJw43N90EyV8VNcSwmqV5J961iipAlPtlsBODy3B3bispHMopANM2cM0=

nmISikPIeKFk+B/psi+9xaJnMSv3wm5J2N0mEQe3mS6CcvFpT9HZsfLXbsTsMPhp3SSFkiJhG7A8FnIsv4VI2+nKgw2cdBQlHmzdUvEZLzCs8hhq2MTbZItoCVNmqoGC

lpdtS1LXTbH/7HDRpyIOJw==

描述

s5DBWjFjswBVClMt3Lg8pZ0kX9pNRYeDD+I+L8Ua6cnbScLEgLAXyj1bvQcH4QbUPsVlhqrgB1T8E6SJAtLv/j5hxnG4e9bBD9QKwp0lq4XOOmuSTaA5z31p147hN6itpeA6otQHWz2DyI7ubXv0VJHlSy1V9kHTW9YYyw2UeaX5LGl1tpIhXmKLPg2F48Pj01qFE19JzjZqxgpAez8xjvsHw5OMFP28PU4YM9LtzglJVZGuYvshQze/X7jsSR1o

WW+4oZHPQ71yJuL5OyS/lbFK6qYcfRjsXSdfVOCB4I/TrfO371t5wakRCtJpp+XdhmEjlrzxsj2RKH3IL4qBRwM+aimpQc0YtZVVmPL43N9r0jzhp1VKYlVKjSezVXfOLzNXxnYlQ/vUd0Iyw6xYSB526v4Li7bpCDm80pwazejgIdQDcx09du58PoZyTzWWlkM0qkZ0Nue+aS0E7x4F55v/soDLGOaADpK0arRqvKPwmvEWY6S6RVQD2jeOMgK2AK19Thej26QW5H469KdA+w==

app.use(function (req, res, next) {
  console.log('Time: %d', Date.now())
  next()
})

owvtOvcIMpE42D8lmAv3CxUMRe2dAb1N1KgucsiOQ7k=

Uz2gO0mZiDlSnpcgeRSX+MWF7O1qkSzVg8secSFh92g=

    yOAMIBK+3ecSUMtLx5BXAyFSMXbyEI6X0PhgOmCDvBMyg2zFsSLHMK/laWxJ1QD0U5sd5bIXfV10jDIym23P7vCJrSeJ7EnIXQtF7RWzDlefxpfb/1G5Ccl1jTO79vLD9sv0OLNsvFFG/hpVqbQvLCy3vlMxETjL8+6G5fenxu7AbTqjf2fqU30MiEOZmY/NAg+LYgyBJqq2wo+AH8mK8w==

HGysLvaNERv/66Kc2aEngPaE+RBMlL62pYmLQTbm/kX3+UdcDKPyUg4tFe+U/PugADWJT1dDn3xaGIjKVTo33hhKMHto3n99Lovr0zHtPfo=

1zVFb/n3s4cuCXldRIF5bC4BjQN6traurvkqNxOXvk7A28OKt0RpBJqrno8j1Y3OgzshbjSGcCOeKHYfkRyqMeDF1QgPeRi8+A+8xktHZxy2dnFzosgk7va4JRWcc4Rh

// this middleware will not allow the request to go beyond it
app.use(function (req, res, next) {
  res.send('Hello World')
})

// requests will never reach this route
app.get('/', function (req, res) {
  res.send('Welcome')
})

CzriDVLuNdF7o7E8Pfo2pbZ0DOIWk3JZqrRGpR6aDMPksn/pBf2J9eOOFxhozMCj

j0MoIob+/DIFoU1pGOSqMrEmGC7M5q4vB+UeS6KK+szbKA8xTgSBatM9GMyxtcq4VGK3Mo3268wLUEIpa/aVVEXPm1lb40WsKF4BG33r81qOMnseyYxqiEHOwQv76CF+U6v6JOq7W8jPl9uA/19T/RxcpSmd2GgWxYtYq5AeubOPGGMqa00hRzx634j0ilyqpsJ8G5vpKp3221KPjfJEylC944+hMcYUfbyyOydbWANWx39daq87hLno7AHQqofE3HfYb7SdbLzQ/oIhphH2GIP6MFWGvWm1E89kYvUKM2POKNfQezMKCBAYFR+gEWbRJgeqoYmLr8/k3idAHu4eK8iZ0PIHFn79sUFIUT2V9tWsW7EpJ49Q5wCvJ/Ej1od/0GVKAMQyJ+JbEM6gSrSkFN9qMhLkmNR6tfOUhDe00SokhsDcFyWO2eOeQSU7dAOtQO/Wt/t9ZwIVDmcUA6fVb7/RrcEfY8I+mXfUCcTAJFXB75NgZawfIvtnIupfQwBiYdgVLb+5lgF8+DA8z2A72HXRw6m6VbvZFDd1qR2Ta6U50PdfD07q5q3ZzzzxPSIN

9k1cdALbbNEwDDWsOFqBNAizaIpHcwYGlKrJMPjY9sJu+zfO++MXHmtFlakX0RrTIyVLXzpNiZrcHxqtUGIguNlm6PjUP5At/PesoJNEyKGDIqzwcKCOtRPT5xDz0TI/L2jFY4bArGwlyDakQdZA/eNOaZ8Ep61rb5+btbHYovLb4Nz8Uyz4C5P8S4I+on1KJVuGoIbxDSAkWRB0LxTuSNd6vGmoX3rdtJ2X3hPYuWA4cgM8wU7zWqmUa4GEX0d+

app.use(function (err, req, res, next) {
  console.error(err.stack)
  res.status(500).send('Something broke!')
})

路径示例

SD2RgA1ka+4SgkSAZjP4HQwYGbi4mVkFYsjY0WRM2lUUeWJbPvZh0Zekw6xgC/XyrkITaxzvD+AnQAK/L4XrCQyxrmOynqr1+tAWTO1y+wZnwFV+qOJ1C5lNFEcRKqGE

类型例子

buJymgaSk3TUwnNcz+lgBQ==

MJgXQ979hur1RmIQgTUtvKDyQ57bK4hdUcIH6hihRP4LneMuGnOdpa2CRAn9d16I0DFteMmYgXoXN+FC0ckW6g==

app.use('/abcd', function (req, res, next) {
  next()
})

D9DnOB1lZ1vC1Aed+mS8Sw==

MJgXQ979hur1RmIQgTUtvKDyQ57bK4hdUcIH6hihRP6hPSimoOwW4EMfCFnrNziX6OIWD3mpwK73ZPamJl8BIe1nuHH6jOGbPAm9zjTBWbQ=

app.use('/abc?d', function (req, res, next) {
  next()
})

MJgXQ979hur1RmIQgTUtvKDyQ57bK4hdUcIH6hihRP7sTpufGZ85UGUrHrmCgSSfdcFn1JuT6qirMKjFItt4rB+MNfU+sQuESBo3y9/b3+uSjVl+kzzJuUmTbrGNbneURPUJaH+/BVGenMSCHOJ7Ug==

app.use('/ab+cd', function (req, res, next) {
  next()
})

MJgXQ979hur1RmIQgTUtvKDyQ57bK4hdUcIH6hihRP4nrRD2OCkmCqXYaCZ4yqc7KiXFB+klUU5j2/ui4RyCP8vqXl8R2hxah+IoTVdTxt/hnOJ198xwIgCF0tqI4rVXIKlL6qlRcanhZrcscI8oBtCYIVtILKlLGLSF1lrmbUI=

app.use('/ab*cd', function (req, res, next) {
  next()
})

MJgXQ979hur1RmIQgTUtvI/5YiLOiNNA+SvjkdKV3WE54UYK6ge/OiiEfCo+IFXuJJhaDzBd1kBdXwLbhwOciSZ0oXD/qVY5noQ4TTzK3nQ=

app.use('/a(bc)?d', function (req, res, next) {
  next()
})

z1fmYAxVY1h01uEEdGlBdQ==

MJgXQ979hur1RmIQgTUtvCDtkE13RstAaXxS0ZRVKP7wM4eLUZYiOv2LU2/5TbkIljM1xGO0TWrl48An2Uv34+k0Pw3mP4YS88kuon7ZRfw=

app.use(/\/abc|\/xyz/, function (req, res, next) {
  next()
})

IlFBFI6gOb4bq0yJEFNRUw==

MJgXQ979hur1RmIQgTUtvKDyQ57bK4hdUcIH6hihRP41suzX6yNaOX+/kCEjV807e1mNGzffR6s8SGWJAq39xgh2o8RS9xGWwglXNGpvv1r+pTGTQoDG4OaI6Q4mvRLM7+VmWEZmT2lizACn9J1M5wMbkcbkkQoNuh7RAr74BwM=

app.use(['/abcd', '/xyza', /\/lmn|\/pqr/], function (req, res, next) {
  next()
})

中间件回调函数示例

lmiyy6IMqihborN+623hM3xA3OegoZVTBddgtdzFbPZeFpKenAAM7ePSC31XdcPM3wZxr284cAuedWa0WlpBHdq015mA4NGUdELUfYu6t02+vJoFaYf7s2LGRTjjLqPLOnQeByivJ4QGN+t+B33wLNDrLNzbI3QktvkvWuaEvaI5Amca81iB2p9aVsau6Bk2jzhdv6SL/Yllw8p3gjRYlOGzS91UjJ0q/gNdoKnLbcJhar9Xt09Nj4wOJrwSXMxseTI/cmktVFvj99xqo9m6DY0Ii8iQklw3b/lK1a6bBQHLe7HD93qTfp5qeptiIXxcZC9ypCq7m+lKAbeyDQetaJdoozhoxKkkjQmsPyH6658iWeMbkvcVj9akMJEd2GFdD67Jz/Knuk9yVULuHDYmaPhofGhkJUST62DmFOFaBvByH76VqdllKHHKBt2yJshF

用法例子

vZJYIPiQEGoWKrw3e3Ct1A==

fa8DsaXGBm/hrLD2ObOvGHoCBLa7QVh91SEXApWFrouukguAdAWTZgp/7ZRfr8uaHQa2h8SW1n/qXesz2wjXwg==

app.use(function (req, res, next) {
  next()
})

rG0SgWgEIsupm2848h1FQw+A8pmSb20aEKv8Cx4lOMU=

var router = express.Router()
router.get('/', function (req, res, next) {
  next()
})
app.use(router)

Pq8cfxC4bZmPYj1MWVWt2fN34wL22jnIBW/YvhAIQTpm2YJ4rkOTY20TSIkBq0RZ

var subApp = express()
subApp.get('/', function (req, res, next) {
  next()
})
app.use(subApp)

yvBR+VE3R30/1A3I9ObFeA==

tV0IxsLOqGvtxqIcfQ4Ufhs3f09VtKAQon93MPQlkfQ6XxG+As1hPoGtS+dvtW55ul03r3CT8WMqQrjwVmtjAg==

var r1 = express.Router()
r1.get('/', function (req, res, next) {
  next()
})

var r2 = express.Router()
r2.get('/', function (req, res, next) {
  next()
})

app.use(r1, r2)

IlFBFI6gOb4bq0yJEFNRUw==

/u0vntyLSCnoNTgX9BK2WbYAdRKQTrjfGB/TSRag2YDMKnt5wIAmdQpY0uim5yCY

var r1 = express.Router()
r1.get('/', function (req, res, next) {
  next()
})

var r2 = express.Router()
r2.get('/', function (req, res, next) {
  next()
})

app.use([r1, r2])

WgPi2wHgYJJ2/wGmRN2Ltw==

cfle4r6eqIkzFGnFh+rDfKUhPa6FD3M3bTJ8faHeefLIYKXrI0PLbPyQ36muEAsG+6BHTfJcJftjmKgGjKo+MA==

function mw1 (req, res, next) { next() }
function mw2 (req, res, next) { next() }

var r1 = express.Router()
r1.get('/', function (req, res, next) { next() })

var r2 = express.Router()
r2.get('/', function (req, res, next) { next() })

var subApp = express()
subApp.get('/', function (req, res, next) { next() })

app.use(mw1, [mw2, r1, r2], subApp)

JcVSr7mXCLNjI6XdHeTFNOmhcy5lWnQMpYrGT8aVP20StINXTJLVRKEaPGRtWQPK/6bqJfSh9SfKsCPOIFDWii5asUoYyYVMXD+JcbPXfFZBD1lXfsUOXDnN7n9mUTg0/aYx09dEXiXJvywyTpWkypy5hjoVI2K4gKEPWeIJDczRWOsscyH1vjDKW4Pn4QE3

FAh5YrPYHclQpfe0KanhOc7oJEW8YYJn7VDa6RSk/EbhoujIFiuIpme9tfEZ/s84G4U/MdrbmaM/MqqdCeQ7AQZ+3BqJIaxM+e/6T+JP3ys=

// GET /style.css etc
app.use(express.static(path.join(__dirname, 'public')))

193AtUWN8Sgz17YznRUHkKMNO5oEX8xsE30M0DocsarJYZKn7dl6W4k8rl5bwi4VQIIPppp+R0+kIAwnwbBhfmA/x6qtMnszayfDGVnG35lBlmDXg06WFotinarKIaR91/ikZV55/xoBOSUUBpcP0w==

// GET /static/style.css etc.
app.use('/static', express.static(path.join(__dirname, 'public')))

2cKcfBBni88OKy267F+BQZOm4Yigb6NRHDMCvarFCFr9PVkRH/OBn0pwArAJPHaeuZP4VaA+/swBz/G/Q2qtcYNTbnu9triRRKA5r+JACuO9LSaYFDHBvOSF8uePd0r26iwm1he+k7vT6Z/kP7XYsg==

app.use(express.static(path.join(__dirname, 'public')))
app.use(logger())

3RL6yGaS3XyNX+zVt13jgs2pEcXO3xSg/5z0ZzFgKmhgJwWuROUCCPB71qFCnq7zKS9EPShRzKuoPeKNZoxrPi7n672+zWE9hwWKnAfAxhBbqu95R+KSX7nyNrGy4ixb

app.use(express.static(path.join(__dirname, 'public')))
app.use(express.static(path.join(__dirname, 'files')))
app.use(express.static(path.join(__dirname, 'uploads')))