Projekt

Obecné

Profil

Stáhnout (3.92 KB) Statistiky
| Větev: | Revize:
1
# finalhandler
2

    
3
[![NPM Version][npm-image]][npm-url]
4
[![NPM Downloads][downloads-image]][downloads-url]
5
[![Node.js Version][node-image]][node-url]
6
[![Build Status][travis-image]][travis-url]
7
[![Test Coverage][coveralls-image]][coveralls-url]
8

    
9
Node.js function to invoke as the final step to respond to HTTP request.
10

    
11
## Installation
12

    
13
This is a [Node.js](https://nodejs.org/en/) module available through the
14
[npm registry](https://www.npmjs.com/). Installation is done using the
15
[`npm install` command](https://docs.npmjs.com/getting-started/installing-npm-packages-locally):
16

    
17
```sh
18
$ npm install finalhandler
19
```
20

    
21
## API
22

    
23
<!-- eslint-disable no-unused-vars -->
24

    
25
```js
26
var finalhandler = require('finalhandler')
27
```
28

    
29
### finalhandler(req, res, [options])
30

    
31
Returns function to be invoked as the final step for the given `req` and `res`.
32
This function is to be invoked as `fn(err)`. If `err` is falsy, the handler will
33
write out a 404 response to the `res`. If it is truthy, an error response will
34
be written out to the `res`.
35

    
36
When an error is written, the following information is added to the response:
37

    
38
  * The `res.statusCode` is set from `err.status` (or `err.statusCode`). If
39
    this value is outside the 4xx or 5xx range, it will be set to 500.
40
  * The `res.statusMessage` is set according to the status code.
41
  * The body will be the HTML of the status code message if `env` is
42
    `'production'`, otherwise will be `err.stack`.
43
  * Any headers specified in an `err.headers` object.
44

    
45
The final handler will also unpipe anything from `req` when it is invoked.
46

    
47
#### options.env
48

    
49
By default, the environment is determined by `NODE_ENV` variable, but it can be
50
overridden by this option.
51

    
52
#### options.onerror
53

    
54
Provide a function to be called with the `err` when it exists. Can be used for
55
writing errors to a central location without excessive function generation. Called
56
as `onerror(err, req, res)`.
57

    
58
## Examples
59

    
60
### always 404
61

    
62
```js
63
var finalhandler = require('finalhandler')
64
var http = require('http')
65

    
66
var server = http.createServer(function (req, res) {
67
  var done = finalhandler(req, res)
68
  done()
69
})
70

    
71
server.listen(3000)
72
```
73

    
74
### perform simple action
75

    
76
```js
77
var finalhandler = require('finalhandler')
78
var fs = require('fs')
79
var http = require('http')
80

    
81
var server = http.createServer(function (req, res) {
82
  var done = finalhandler(req, res)
83

    
84
  fs.readFile('index.html', function (err, buf) {
85
    if (err) return done(err)
86
    res.setHeader('Content-Type', 'text/html')
87
    res.end(buf)
88
  })
89
})
90

    
91
server.listen(3000)
92
```
93

    
94
### use with middleware-style functions
95

    
96
```js
97
var finalhandler = require('finalhandler')
98
var http = require('http')
99
var serveStatic = require('serve-static')
100

    
101
var serve = serveStatic('public')
102

    
103
var server = http.createServer(function (req, res) {
104
  var done = finalhandler(req, res)
105
  serve(req, res, done)
106
})
107

    
108
server.listen(3000)
109
```
110

    
111
### keep log of all errors
112

    
113
```js
114
var finalhandler = require('finalhandler')
115
var fs = require('fs')
116
var http = require('http')
117

    
118
var server = http.createServer(function (req, res) {
119
  var done = finalhandler(req, res, { onerror: logerror })
120

    
121
  fs.readFile('index.html', function (err, buf) {
122
    if (err) return done(err)
123
    res.setHeader('Content-Type', 'text/html')
124
    res.end(buf)
125
  })
126
})
127

    
128
server.listen(3000)
129

    
130
function logerror (err) {
131
  console.error(err.stack || err.toString())
132
}
133
```
134

    
135
## License
136

    
137
[MIT](LICENSE)
138

    
139
[npm-image]: https://img.shields.io/npm/v/finalhandler.svg
140
[npm-url]: https://npmjs.org/package/finalhandler
141
[node-image]: https://img.shields.io/node/v/finalhandler.svg
142
[node-url]: https://nodejs.org/en/download
143
[travis-image]: https://img.shields.io/travis/pillarjs/finalhandler.svg
144
[travis-url]: https://travis-ci.org/pillarjs/finalhandler
145
[coveralls-image]: https://img.shields.io/coveralls/pillarjs/finalhandler.svg
146
[coveralls-url]: https://coveralls.io/r/pillarjs/finalhandler?branch=master
147
[downloads-image]: https://img.shields.io/npm/dm/finalhandler.svg
148
[downloads-url]: https://npmjs.org/package/finalhandler
(3-3/5)