node-req

2.1.2 • Public • Published

Node Req

A facade over Node.js HTTP req object with no side-effects.

NPM Version Build Status Appveyor Coveralls

node-req is an i/o module for parsing and returning values out of HTTP request object using helper methods.

See also

  1. node-res
  2. node-cookie

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

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
}

Package Sidebar

Install

npm i node-req

Weekly Downloads

15,295

Version

2.1.2

License

MIT

Unpacked Size

30.5 kB

Total Files

4

Last publish

Collaborators

  • amanvirk
  • virk