# braindead-json-api

> Very straightforward JSON serving server.

Latest version **0.0.7** (published 2017-04-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install braindead-json-api
pnpm add braindead-json-api
yarn add braindead-json-api
bun add braindead-json-api
```

Provides the command `bja`.

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.7 |
| Published | 2017-04-26 |
| First published | 2017-04-22 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 7 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | mike1808 |
| Maintainers | mike1808 |
| Keywords | json, cli, server, serve, json serve |

## Links

- npm: https://www.npmjs.com/package/braindead-json-api
- Repository: https://github.com/mike1808/braindead-json-api
- Homepage: https://github.com/mike1808/braindead-json-api#readme
- Issues: https://github.com/mike1808/braindead-json-api/issues
- npm.io page: https://npm.io/package/braindead-json-api

## Dependencies (7)

- [koa](https://npm.io/package/koa.md) ^2.2.0
- [kcors](https://npm.io/package/kcors.md) ^2.2.1
- [koa-body](https://npm.io/package/koa-body.md) ^2.0.0
- [commander](https://npm.io/package/commander.md) ^2.9.0
- [fs-promise](https://npm.io/package/fs-promise.md) ^2.0.2
- [koa-logger](https://npm.io/package/koa-logger.md) ^2.0.1
- [koa-favicon](https://npm.io/package/koa-favicon.md) ^2.0.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 0.0.7 (latest) — 2017-04-26
- 0.0.6 — 2017-04-25
- 0.0.5 — 2017-04-23
- 0.0.4 — 2017-04-22
- 0.0.3 — 2017-04-22
- 0.0.2 — 2017-04-22
- 0.0.1 — 2017-04-22

## README

# braindead-json-api
Very straightforward JSON serving server.

Created to work offline when API server is not available. Just put your JSON response files in `./db` folder and do `npm start`.

## Installation

This app  requires node v7.6.0 or higher for ES2015 and async function support.
```bash
$ npm install -g braindead-json-api
```


## Usage

```bash
$ bja -h

  Usage: bja [options] <dir>

  Braindead Json Api

  Options:

    -h, --help                        output usage information
    -V, --version                     output the version number
    -p, --port [port]                 Port to listen
    -a, --ip [ip]                     IP address to listen
    -P, --prefix [prefix]             Prefix for api
    -l, --log                         Log HTTP requests
    --update-method [updateMethod]    HTTP method for partial update
    --replace-method [replaceMethod]  HTTP method for replace
    -R, --routes [routes]             Custom HTTP routes

```

`<dir>` should contain folders and json files. For example, if the content of your `<dir>` looks like this:

```
dir
├── cats
│   └── 53.json
└── cats.json
```

With the default config you will have following endpoints:

- `GET /cats` - will return the content of `<dir>/cats.json`
- `GET /cats/53` - will return the content of `<dir>/cats/53.json`

### Update and replace methods

By default the HTTP method used to update the document is `PATCH` and for the full replace with the request is `PUT`.
You can change them by specifying `--update-method` and `--replace-method` arguments accordinglyy.


### Custom routes

If you want to provide custom routes which cannot be mapped to the folder structure you can provide `json` or `js` file
which will export an array with the following structure:

- Each array item describes one route
- Route has the following structure:

```js
{
    route: <route path>,
    method: <route method (GET, POST, PUT, etc),
    response: <path to the response json file without .json extension>,
    statusCode: <status code, 200 by default>
}
```

An example of route:

```js
{
    route: '/auth/login/',
    method: 'POST',
    response: '_custom/login',
    statusCode: 200
}
```

Response JSON file is relative to the specified `<dir>`. In this case the response file should be located in
`<dir>/_custom/login.json`


### Disclaimer

I thing you understand that you *SHOULD NOT USE THIS ON PRODUCTION BY ALL MEANS*.

## License

MIT

---
_Source: https://npm.io/package/braindead-json-api · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
