@globality/nodule-express
v0.6.0-dev766
Published
Node Express Conventions
Downloads
86
Readme
@globality/nodule-express
Node Express Conventions
nodule-express
aims to define basic routes for Node Express gateways to focus on definiing
logic for actual API endpoints and leave basic error handling and express set up to this library
Bindings
By importing nodule-express
, the following bindings are made available.
Middleware
middleware.basicAuth
injects a basic auth middlewaremiddleware.errorHandler
injects a middleware to show unhandled errors in JSON format. This middleware should be use at the end of the middleware's chain inside the express app.
Routes
routes.express
returns an Express instanceroutes.health
returns a microcosm-compatible health check endpointroutes.notFound
return a 404-generating endpointroutes.unauthorized
return a 401-generating endpoint
Commands
install
: Install dependencies and save to yarn.lock filelint
: Runs airbnb flavored eslintbuild
: Runs tests and transpiles ES6 -> ES5test
: Runs teststest:watch
: Runs tests watching files changes
Errors
Endpoints should throw errors when something fails. Within nodule-express
, it is expected that:
- All errors define
code
that can be used by API consumers for error handling business logic - Most errors will borrow from HTTP error codes (because they have well-known, useful semantics)
- Error codes should be visible to API consumers via
error.extensions
Local Development
Local development of nodule-express
with other repos has a few common pitfalls related to the
usage of peer dependencies:
nodule-config
is a peer-dependency because various libraries act as plugins to it and it needs a single import ofbottlejs
to share plugin state
To work with nodule-express
locally:
Run
yarn build
withinnodule-express
to transpile the source.Change directories to your local repo that you want to test against
nodule-express
.Run
yarn add /path/to/nodule-express
to copy the transpiled source into your local repo. Do NOT useyarn link
After running
yarn add
, remove (or move-of-the-way) thenodule_modules
from withinnodule_modules/@globality/nodule-express/