UNPKG

rest-flat-file-db

Version:
83 lines (46 loc) 2.62 kB
# rest-flat-file-db [![Build Status](https://travis-ci.org/balazs4/rest-flat-file-db.svg?branch=master)](https://travis-ci.org/balazs4/rest-flat-file-db) [![dependencies](https://david-dm.org/balazs4/rest-flat-file-db/status.svg)](https://david-dm.org/balazs4/rest-flat-file-db) [![devDependencies](https://david-dm.org/balazs4/rest-flat-file-db/dev-status.svg)](https://david-dm.org/balazs4/rest-flat-file-db?type=dev) [![styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier) > REST API for [flat-file-db](https://github.com/mafintosh/flat-file-db) powered by [koa2](https://github.com/koajs/koa) ## About This is a tiny module which extends the lightweight `flat-file-db` key-value based `to-go` datastorage. It might be useful for small projects (e.g. hackathon). ## Usage ### As standalone instance ``` # install the module globally $ npm install -g rest-flat-file-db # start the module with default parameters $ rest-flat # OR start it with custom parameters $ PORT=3333 DB=/tmp/mydatabase rest-flat ``` ### As module `$ npm install rest-flat-file-db --save` ```javascript // index.js const restflat = require('rest-flat-file-db'); const flatdb = require('flat-file-db'); const app = restflat(flatdb.sync('/tmp/mydatabase')); // this is just a normal koa2 app and it is ready to launch. app.listen(); ``` **Hint**: You can pass your own `koa` app as well if you want to make some setup on it before the rest-flat endpoints will be initialized. (e.g. Authentication) This second parameter is optional. In default case the `koa` instance will be created by the `rest-flat-file-db` itself. ## REST API #### GET / 200 and a single object contains all key-value pairs of the database #### GET /:key 200 (if the `key` could be found, otherwise 404) and the value of :key #### POST /:key 409 if `key` already exists in the database otherwise 201 and the body of the post will be stored with the `key` in the db (response.headers['location'] contains the url to the item) #### PUT /:key 200 (if the `key` could be found, otherwise 404) and the **updated** item with its new content #### PATCH /:key 200 (if the `key` could be found, otherwise 404) and the **merged** (with `Object.assign` call) item with its new content #### DELETE /:key 200 (if the `key` could be found, otherwise 404) and the **deleted** item from the db (it acts like a `pop` call on a stack) #### POST / 201 and the body of the post will be stored with a **generated** key in the db (response.headers['location'] contains the url to the item)