An open API service indexing awesome lists of open source software.

https://github.com/igorkosta/chav

chav is a hapi plugin to create static routes from json files
https://github.com/igorkosta/chav

hapi hapi-plugin hapijs json node npm

Last synced: 2 months ago
JSON representation

chav is a hapi plugin to create static routes from json files

Awesome Lists containing this project

README

          

# Chav [ ![Codeship Status for igorkosta/chav](https://codeship.com/projects/6d00f750-632c-0134-e217-22dce1a7050d/status?branch=master)](https://codeship.com/projects/175290)
Sometimes in life you just want to serve static `json` content as an API route.

`chav` is a hapi.js plugin to serve a static `json` file as an API route. Per default the file under `static/static.json` is served as `GET /statics`

## Installation
`npm install --save chav`

## Usage
As long as you don't provide any options, we'll assume that the file you want to be served is called `static.json` and is located in the `static` folder of your app.
The `/static` route is not protected.
These are the defaults we're using. If you want to override the `servable` or the `path` just provide your `options` on plugin registration.

```
const defaults = {
servable: 'static/static.json',
path: '/statics',
tags: ['static', 'route'],
description: 'Renders static route defined in a file',
responses: {
statusCode: 400,
message: 'No static routes found'
},
auth: false
};
```

You can override `servable`, `path`, `tags` and `description`.

When you register your plugin with e.g. `glue`:

```
{
"plugin": {
"register": "chav",
"options": {
"servable" : "static/foobar.json"
}
}
}
```

## TODOs
- Whenever the `json` file has more than one array (see example below), try to also offer the `/statics/beers` and `/statics/snacks` routes

```
{
"beers" : [

],
"snacks" : [

]
}
```

- Check if the `servable` is actually a `file` or a `directory` and if it's a `directory` serve every file as an API route, e.g. file name is a route name.

## License
[MIT](https://opensource.org/licenses/MIT)