Node Req
A facade over Node.js HTTP
reqobject with no side-effects.
node-req is an i/o module for parsing and returning values out of HTTP request object using helper methods.
See also
Http Server
var http = require('http')
var nodeReq = require('node-req')
http.createServer(function (req, res) {
// get query string from req
var query = nodeReq.get(req)
}).listen(3000)
Yes, that's all, node-req makes no assumption on how to add routes or handle HTTP requests. All it does it parse request object and return values out of it.
API
- get(req, [options]) ⇒
Object - method(req) ⇒
String - headers(req) ⇒
Object - header(req, key) ⇒
String - fresh(req, res) ⇒
Boolean - stale(req, res) ⇒
Boolean - ip(req, [trust]) ⇒
String - ips(req, [trust]) ⇒
Array - protocol(req, [trust]) ⇒
String - secure(req) ⇒
Boolean - subdomains(req, [trust], [offset]) ⇒
Array - ajax(req) ⇒
Boolean - pjax(req) ⇒
Boolean - hostname(req, [trust]) ⇒
String - url(req) ⇒
String - originalUrl(req) ⇒
String - is(req, keys) ⇒
String - accepts(req, keys) ⇒
String - types(req) ⇒
Array - language(req, accepted) ⇒
String - languages(req) ⇒
Array - encoding(req, accepted) ⇒
String - encodings(req) ⇒
Array - charset(req, accepted) ⇒
String - charsets(req) ⇒
Array - hasBody(req) ⇒
Boolean
get(req, [options]) ⇒ Object
Parses query string from url an returns an object.
Kind: inner method of Request
| Param | Type | Description |
|---|---|---|
| req | http.IncomingMessage |
|
| [options] | Object |
Options are passed to https://www.npmjs.com/package/qs |
Example
const queryString = nodeReq.get(req)
method(req) ⇒ String
Returns the exact copy of request.method. Defined
here
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
const method = nodeReq.method(req)
headers(req) ⇒ Object
Returns an object of headers for a given request.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
const headers = nodeReq.headers(req)
header(req, key) ⇒ String
Returns header value for a given key. Also
it will handle the inconsistencies between
referer and referrer header.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| key | String |
Example
const authHeader = nodeReq.header(req, 'Authorization')
fresh(req, res) ⇒ Boolean
Returns the freshness of a response inside the client
cache. If client cache has the latest response, this
method will return true, otherwise it will return
false.
Also when HTTP header Cache-Control: no-cache is present
this method will return false everytime.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| res | http.ServerResponse |
Example
if (nodeReq.fresh(req, res)) {
res.writeHead(304)
}
stale(req, res) ⇒ Boolean
This method is the opposite of the nodeReq.fresh
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| res | http.ServerResponse |
Example
if (!nodeReq.stale(req, res)) {
res.writeHead(304)
}
ip(req, [trust]) ⇒ String
Returns the most trusted ip address for the HTTP request. It will handle the use cases where your server is behind a proxy.
Make sure to check proxy-addr
for the available options for trust.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| [trust] | Mixed |
Example
nodeReq.ip(req, '127.0.0.1')
nodeReq.ip(req, ['::1/128', 'fe80::/10'])
ips(req, [trust]) ⇒ Array
Returns list of all remote addresses ordered with most trusted on the top of the list.
Make sure to check proxy-addr
for the available options for trust.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| [trust] | Mixed |
Example
nodeReq.ips(req, '127.0.0.1')
nodeReq.ips(req, ['::1/128', 'fe80::/10'])
protocol(req, [trust]) ⇒ String
Returns request protocol based upon encrypted connection or X-Forwaded-Proto header.
Make sure to check proxy-addr
for the available options for trust.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| [trust] | Mixed |
Example
const protocol = nodeReq.protocol(req)
secure(req) ⇒ Boolean
Looks for request protocol to check for https existence or returns false.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
const isHttps = nodeReq.secure(req)
subdomains(req, [trust], [offset]) ⇒ Array
Returns the request subdomains as an array. Also
it will make sure to exclude www from the
subdomains list.
Make sure to check proxy-addr
for the available options for trust.
Kind: inner method of Request
| Param | Type | Default | Description |
|---|---|---|---|
| req | http.IncomingMessage |
| | |
| [trust] | Mixed |
| | |
| [offset] | Number |
2 |
subdomain offset |
Example
const subdomains = nodeReq.subdomains(req)
ajax(req) ⇒ Boolean
Determines whether request is an ajax request or not, based on X-Requested-With header.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
if (nodeReq.ajax(req)) {
res.writeHead(200, {"Content-type": "application/json"})
} else {
res.writeHead(200, {"Content-type": "text/html"})
}
pjax(req) ⇒ Boolean
Tells whether request has X-Pjax header or not.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
if (nodeReq.pjax(req)) {
// return partial content
} else {
// full page refresh
}
hostname(req, [trust]) ⇒ String
Returns the hostname of HTTP request.
Make sure to check proxy-addr
for the available options for trust.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| [trust] | Mixed |
Example
const hostname = nodeReq.hostname(request)
url(req) ⇒ String
Returns request url after removing the query string.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
const url = nodeReq.url(request)
originalUrl(req) ⇒ String
Returns the untouched url.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
const url = nodeReq.originalUrl(request)
is(req, keys) ⇒ String
Tells whether request accept content of a given type or not (based on Content-type) header.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| keys | Mixed |
Example
// req.headers.content-type = 'application/json'
nodeReq.is(req, ['json']) // json
nodeReq.is(req, ['json', 'html']) // json
nodeReq.is(req, ['application/*']) // application/json
nodeReq.is(req, ['html']) // '<empty string>'
accepts(req, keys) ⇒ String
Return the best possible response accepted by the
client. This is based on the Accept header.
Learn more about it
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| keys | Mixed |
Example
const type = nodeReq.accepts(req, ['json', 'html'])
switch(type) {
case 'json':
res.setHeader('Content-Type', 'application/json')
res.write('{"hello":"world!"}')
break
case 'html':
res.setHeader('Content-Type', 'text/html')
res.write('<b>hello, world!</b>')
break
default:
res.setHeader('Content-Type', 'text/plain')
res.write('hello, world!')
}
types(req) ⇒ Array
This method is similar to {{#crossLink "Request/accepts"}}{{/crossLink}}, instead it will return an array of types from most to least preferred one.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
language(req, accepted) ⇒ String
Returns one of the most preferrable language.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| accepted | Array |
languages(req) ⇒ Array
Returns list of all accepted languages from most to least preferred one.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
encoding(req, accepted) ⇒ String
Returns the best maching encoding
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| accepted | Array |
encodings(req) ⇒ Array
Returns list of all encodings from most to least preferred one.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
charset(req, accepted) ⇒ String
Returns the best maching charset based upon
Accept-Charset header.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
| accepted | Array |
charsets(req) ⇒ Array
Returns a list of all charsets from most
to least preferred one based upon
Accept-Charset header.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
hasBody(req) ⇒ Boolean
Tells whether request has body or not to be read by any body parser.
Kind: inner method of Request
| Param | Type |
|---|---|
| req | http.IncomingMessage |
Example
if (nodeReq.hasBody(request)) {
// use body parser
}