Nominally Patriotic Meathead

    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
    }

    Install

    npm i node-req

    DownloadsWeekly Downloads

    40,291

    Version

    2.1.2

    License

    MIT

    Unpacked Size

    30.5 kB

    Total Files

    4

    Last publish

    Collaborators

    • amanvirk
    • virk