quick and dirty api boilerplate

Craig Fletcher 4337b08561 Initial commit 4 years ago
src 4337b08561 Initial commit 4 years ago
.eslintrc.cjs 4337b08561 Initial commit 4 years ago
.gitignore 4337b08561 Initial commit 4 years ago
.nvmrc 4337b08561 Initial commit 4 years ago
.prettierrc 4337b08561 Initial commit 4 years ago
README.md 4337b08561 Initial commit 4 years ago
package-lock.json 4337b08561 Initial commit 4 years ago
package.json 4337b08561 Initial commit 4 years ago

README.md

Easy API boilerplate

Quick and dirty API boilerplate, using:

  • Redis for the DB
  • Yup for validation
  • Restify for the web server/routing

There are many limitations to this configuration, it is intended as a debugging/prototyping tool.

Usage

Import start from easy-api.js, call like so:

start(
  routes[], 
  host = '127.0.0.1', 
  port = 8080, 
  dbOpts{}, 
  serverOpts{}
)

Storage

Objects are stored in redis by calculating the sha256 hash, hex digest from a "path" array for convenience (e.g. ["users", req.params.userName, "stats", "visits"]).

Routes

Routes are defined as simple factories, passed a db wrapper and yup instance as an object ({db, yup}) and expected to return:

  • type: HTTP verb, e.g. get
  • route: restify path string, e.g. /api/hello/:name
  • handler: restify handler function for route
  • schema (optional): yup schema to validate against

Validation

If a route passes a schema, the request will be validated against it:

  • get requests validate against req.params
  • post requests validate against req.data