A facade over Node.js HTTP
res
object with no side-effects.
node-res
is a simple module to make HTTP response in Node.js. It offers helpers to make it easier to set headers
, define response statuses and properly parse response type to set appropriate headers.
For example:
// content-type: plain/text
nodeRes.send(req, res, 'Hello world')
// content-type: application/json
nodeRes.send(req, res, { greeting: 'hello world' })
// content-type: text/html
nodeRes.send(req, res, '<h2> Hello world </h2>')
const http = require('http')
const nodeRes = require('node-res')
http.createServer(function (req, res) {
// plain text
nodeRes.send(req, res, "Hello world")
// json
nodeRes.json(req, res, {time:"now"})
// jsonp
nodeRes.jsonp(req, res, {time:"now"}, "callback")
}).listen(3000)
A simple IO module to make consistent HTTP response, without
worrying about underlying details.
Array
| String
void
void
void
void
void
void
void
void
void
String
String
void
void
void
void
void
void
Promise
Array
| String
Returns the value of an existing header on
the response object
Kind: inner method of Response
Returns: Array
| String
- Return type depends upon the header existing value
Param | Type |
---|---|
res | ServerResponse |
key | String |
Examplejs nodeRes.getHeader(res, 'Content-type')
void
Sets header on the response object. This method will wipe off
existing values. To append to existing values, use append
.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
key | String |
value | String | Array |
Example
```js
nodeRes.header(res, 'Content-type', 'application/json')
// or set an array of headers
nodeRes.header(res, 'Link', ['<http://localhost/>', '<http://localhost:3000/>'])
```
void
Appends value to the header existing values.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
key | String |
value | String | Array |
Example
```js
nodeRes.append(res, 'Content-type', 'application/json')
// or append an array of headers
nodeRes.append(res, 'Link', ['<http://localhost/>', '<http://localhost:3000/>'])
```
void
Set status on the HTTP res object
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
code | Number |
Examplejs nodeRes.status(res, 200)
void
Sets the header on response object, only if it
does not exists.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
key | String |
value | String | Array |
Examplejs nodeRes.safeHeader(res, 'Content-type', 'application/json')
void
Removes the header from response
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
key | String |
Examplejs nodeRes.removeHeader(res, 'Content-type')
void
Write string or buffer to the response object.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
body | String | Buffer |
Examplejs nodeRes.write(res, 'Hello world')
void
Explictly end HTTP response
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
[payload] | String | Buffer |
Examplejs nodeRes.end(res, 'Hello world')
void
Send body as the HTTP response and end it. Also
this method will set the appropriate Content-type
and Content-length
.
If body is set to null, this method will end the response
as 204.
Kind: inner method of Response
Param | Type | Default |
---|---|---|
req | http.ServerRequest |
|
res | http.ServerResponse |
|
body | String | Buffer | Object | Stream |
|
[generateEtag] | Boolean |
true |
Example
```js
nodeRes.send(req, res, 'Hello world')
// or html
nodeRes.send(req, res, '
// or JSON
nodeRes.send(req, res, { greeting: 'Hello world' })
// or Buffer
nodeRes.send(req, res, Buffer.from('Hello world', 'utf-8'))
// Ignore etag
nodeRes.send(req, res, 'Hello world', false)
```
void
Sets the Etag header for a given body chunk
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
body | String | Buffer |
Examplejs nodeRes.etag(res, 'Hello world')
String
Prepares the response body by encoding it properly. Also
sets appropriate headers based upon the body content type.
This method is used internally by send
, so you should
never use it when calling send
.
It is helpful when you want to get the final payload and end the
response at a later stage.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
body | Mixed |
Example
```js
const chunk = nodeRes.prepare(res, '
if (chunk) {
nodeRes.etag(res, chunk)
if (nodeReq.fresh(req, res)) {
chunk = null
nodeRes.status(304)
}
String
Prepares response for JSONP
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
body | Object |
callbackFn | String |
Example
```js
const chunk = nodeRes.prepareJsonp(res, '
if (chunk) {
nodeRes.etag(res, chunk)
if (nodeReq.fresh(req, res)) {
chunk = null
nodeRes.status(304)
}
void
Returns the HTTP response with Content-type
set to application/json
.
Kind: inner method of Response
Param | Type | Default |
---|---|---|
req | http.IncomingMessage |
|
res | http.ServerResponse |
|
body | Object |
|
[generateEtag] | Boolean |
true |
Examplejs nodeRes.json(req, res, { name: 'virk' }) nodeRes.json(req, res, [ 'virk', 'joe' ])
void
Make JSONP response with Content-type
set totext/javascript
.
Kind: inner method of Response
Param | Type | Default |
---|---|---|
req | http.IncomingMessage |
|
res | http.ServerResponse |
|
body | Object |
|
[callbackFn] | String |
'callback' |
[generateEtag] | Boolean |
true |
Examplejs nodeRes.jsonp(req, res, { name: 'virk' }, 'callback')
void
Set Location
header on the HTTP response.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
url | String |
void
Redirect the HTTP request to the given url.
Kind: inner method of Response
Param | Type | Default |
---|---|---|
req | http.IncomingMessage |
|
res | http.ServerResponse |
|
url | String |
|
[status] | Number |
302 |
Examplejs nodeRes.redirect(req, res, '/')
void
Add vary header to the HTTP response.
Kind: inner method of Response
Param | Type |
---|---|
res | http.ServerResponse |
field | String |
void
Set content type header by looking up the actual
type and setting charset to utf8.
When defining custom charset, you must set pass the complete
content type, otherwise false
will be set as the
content-type header.
Kind: inner method of Response
Param | Type |
---|---|
req | http.IncomingMessage |
res | http.ServerResponse |
[charset] | String |
Example
```js
nodeRes.type(res, 'html')
nodeRes.type(res, 'json')
nodeRes.type(res, 'text/html', 'ascii')
```
Promise
Pipe stream to the response. Also this method will make sure
to destroy the stream, if request gets cancelled.
The promise resolve when response finishes and rejects, when
stream raises errors.
Kind: inner method of Response
Param | Type |
---|---|
res | Object |
body | Stream |
Example
```js
Response.stream(res, fs.createReadStream('foo.txt'))
// handle stream errors
Response
.stream(res, fs.createReadStream('foo.txt'))
.catch((error) => {
})
```