Socket
Book a DemoInstallSign in
Socket

@koa/json-filter

Package Overview
Dependencies
Maintainers
9
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@koa/json-filter

Middleware allowing the client to filter the response to only what they need

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
9
Created
Source

koa-json-filter

Middleware allowing the client to filter the response to only what they need, reducing the amount of traffic over the wire using the ?filter=foo,bar,baz querystring parameter.

JSONSelect would also be great for this but I find it's a little too complicated for the average use-case, so this is just a simple key filter.

Installation

$ npm install @koa/json-filter

Please note that if you're using an earlier version of koa 2 with function generator you need to install the older version 0.0.1

$ npm install koa-json-filter@0.0.1

Options

  • name querystring param defaulting to "filter"

Filtering customization

You may also set ctx.filter to an array of names to filter on, for example by using a header field X-Filter: name,email.

Example

Object responses

Script:

const Koa = require('koa');
const filter = require('@koa/json-filter');

const app = new Koa();

app.use(filter());

app.use(async ctx => {
  ctx.body = {
    name: 'tobi',
    email: 'tobi@segment.io',
    packages: 5,
    friends: ['abby', 'loki', 'jane']
  };
});

app.listen(3000);
console.log('app listening on port 3000');

Response:

$ GET /?filter=name
{
  "name": "tobi"
}

Array responses

Script:

const Koa = require('koa');
const filter = require('@koa/json-filter');

const app = new Koa();

app.use(filter());

app.use(async ctx => {
  ctx.body = [
    {
      name: 'tobi',
      email: 'tobi@segment.io',
      packages: 5,
      friends: ['abby', 'loki', 'jane']
    },
    {
      name: 'loki',
      email: 'loki@segment.io',
      packages: 2,
      friends: ['loki', 'jane']
    },
    {
      name: 'jane',
      email: 'jane@segment.io',
      packages: 2,
      friends: []
    },
    {
      name: 'ewald',
      email: 'ewald@segment.io',
      packages: 2,
      friends: ['tobi']
    }
  ];
});

app.listen(3000);
console.log('app listening on port 3000');

Response:

$ GET /?filter=name,email
[
  {
    "name": "tobi",
    "email": "tobi@segment.io"
  },
  {
    "name": "loki",
    "email": "loki@segment.io"
  },
  {
    "name": "jane",
    "email": "jane@segment.io"
  },
  {
    "name": "ewald",
    "email": "ewald@segment.io"
  }
]

License

MIT

Keywords

koa

FAQs

Package last updated on 10 Apr 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts