# Easy API boilerplate Quick and dirty API boilerplate, using: * Redis for the DB * Yup for validation * Restify for the web server/routing * Winston for logging * ESLint for linting There are many limitations to this configuration, it is intended as a debugging/prototyping tool. There are fairly few dependencies in this boilerplate, and most things are simply factories with instances passed in. ## 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"]`). There is no hardening or security intention behind this - it's simply a fast hash to use as an ID. ## Routes Routes are defined as simple factories, passed a db wrapper, yup and log instance as an object ({db, yup, log}) 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`