finalhandler
函数调用,作为响应HTTP请求的最后一步。
安装
这是一个 node . js 模块可通过
npm注册表. 安装是使用
npm install 命令:
$ npm install finalhandler
API
const finalhandler = require('finalhandler')
Finalhandler (req, res, [options])
返回要调用的函数,作为给定方法的最后一步 req 和 res。
这个函数将被调用为 fn(err)。如果 err 是false,处理程序会吗
编写一个404响应 res. 如果为真,则会出现错误响应
被写了出来 res 或 res 如果已经收到响应,将终止
开始了。
当写入错误时,会在响应中添加以下信息:
- 这个
res.statusCode设置为err.status(或err.statusCode). 如果 这个值超出了4xx或5xx的范围,它将被设置为500。 - 这个
res.statusMessage根据状态码设置。 - 正文将是状态码消息的HTML
env是'production',否则将会err.stack。 - 中指定的任何标头
err.headers对象。
最后的处理程序还将从 req 调用时。
options.env
缺省情况下,环境由 NODE_ENV 变量,但它可以是
被此选项覆盖。
options.onerror
提供要调用的函数 err 当它存在时。可以用于
将错误写入中心位置,而不需要生成过多的函数。叫
作为 onerror(err, req, res)。
例子
总404
const finalhandler = require('finalhandler')
const http = require('http')
const server = http.createServer((req, res) => {
const done = finalhandler(req, res)
done()
})
server.listen(3000)
执行简单的操作
const finalhandler = require('finalhandler')
const fs = require('fs')
const http = require('http')
const server = http.createServer((req, res) => {
const done = finalhandler(req, res)
fs.readFile('index.html', (err, buf) => {
if (err) return done(err)
res.setHeader('Content-Type', 'text/html')
res.end(buf)
})
})
server.listen(3000)
与中间件风格的函数一起使用
const finalhandler = require('finalhandler')
const http = require('http')
const serveStatic = require('serve-static')
const serve = serveStatic('public')
const server = http.createServer((req, res) => {
const done = finalhandler(req, res)
serve(req, res, done)
})
server.listen(3000)
记录所有的错误
const finalhandler = require('finalhandler')
const fs = require('fs')
const http = require('http')
const server = http.createServer((req, res) => {
const done = finalhandler(req, res, { onerror: logerror })
fs.readFile('index.html', (err, buf) => {
if (err) return done(err)
res.setHeader('Content-Type', 'text/html')
res.end(buf)
})
})
server.listen(3000)
function logerror (err) {
console.error(err.stack || err.toString())
}