express-response-filter

    0.5.2 • Public • Published

    Express Response Filter Middleware NPM version

    This Express Middleware will allow you to send a subset of a JSON object instead of an entire object from your HTTP services. To do so, your services will begin accepting the ?fields= query-string that, using a simple language, will specify which fields and sub-feelds to keep and which to ignore.

    If you've used the Google APIs, provided a ?fields= query-string to get a Partial Response, and wanted to do the same for your own server, now you can do so with this middleware.

    Underneath, this middleware uses json-mask. Use it directly without this middleware if you need more flexibility.

    Installation

    npm install express-response-filter --save
    

    Usage

    var express = require('express')
      , responseFilter = require('express-response-filter')
      , app = express()
     
    app.use(responseFilter({
      filter: ["test"],
    }))
     
    app.get('/', function (req, res, next) {
      // keyword filter, not influenced by user query input
      req.customFilter = ["id", "password", "token"]; // concat to opt.filters array
     
      res.json({
          firstName: 'Mohandas'
        , lastName: 'Gandhi'
        , aliases: [{
              firstName: 'Mahatma'
            , lastName: 'Gandhi'
          }, {
              firstName: 'Bapu'
          }]
      })
    })
     
    app.listen(4000)

    Let's test it:

    $ curl 'http://localhost:4000'
    {"firstName":"Mohandas","lastName":"Gandhi","aliases":[{"firstName":"Mahatma","lastName":"Gandhi"},{"firstName":"Bapu"}]}
    
    $ # Let's just get the first name
    $ curl 'http://localhost:4000?fields=lastName'
    {"lastName":"Gandhi"}
    
    $ # Now, let's just get the first names directly as well as from aliases
    $ curl 'http://localhost:4000?fields=firstName,aliases(firstName)'
    {"firstName":"Mohandas","aliases":[{"firstName":"Mahatma"},{"firstName":"Bapu"}]}
    

    Note: take a look at /example.

    Syntax

    Look at json-mask for the available syntax of the fields param.

    Options

    query specifies the query-string to use. Defaults to fields prefix specifies the query-string prefix. filter specifies the filter before json-masked. Array | Function is allowed

    app.use(responseFilter({
      query: 'filter'
    }))

    License

    MIT. See LICENSE

    Reference To https://github.com/nemtsov/express-partial-response/

    Install

    npm i express-response-filter

    DownloadsWeekly Downloads

    36

    Version

    0.5.2

    License

    MIT

    Unpacked Size

    8.32 kB

    Total Files

    5

    Last publish

    Collaborators

    • ccckblaze