koa1-json-mask
Middleware allowing the client to mask / filter the response to only what they need,
reducing the amount of traffic over the wire using the ?fields=foo,bar,baz
querystring parameter.
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, you can do so with this
middleware.
The difference between koa-json-filter
and koa-json-mask
is that this middleware
supports filtering parts deep within objects. If you only need to be able to
filter top-level params of objects in the response use filter
, and if you need
more power user mask
.
Underneath, this middleware uses json-mask. Use it directly without this middleware if you need more flexibility.
Installation
$ npm install koa1-json-mask
$ npm install koa1-json-mask@0.0.1
Options
name
querystring param name defaulting to "fields"
Example
Object responses
Script:
const Koa = ;const mask = ; const app = ; app; app; appconsole
Response:
$ GET /?fields=name,location/name
{
"name": "tobi",
"location": {
"name": "London"
}
}
Array responses
Script:
const Koa = ;const mask = const app = app app; appconsole
Response:
$ GET /?fields=name,location/name
[
{
"name": "tobi",
"location": {
"name": "London"
}
},
{
"name": "loki",
"location": {
"name": "New York"
}
}
]
Syntax
The syntax is loosely based on XPath:
a,b,c
comma-separated list will select multiple fieldsa/b/c
path will select a field from its parenta(b,c)
sub-selection will select many fields from a parenta/*/c
the star*
wildcard will select all items in a field
More examples
For more examples, take a look at the examples section of the json-mask README.
License
MIT