convexpress
v2.3.0
Published
Employ conventions to register express routes
Downloads
486
Keywords
Readme
convexpress
Employ conventions to register express routes. This is done by creating route definition objects - convroutes - which:
- register the route's method and path
- handle input validation
- document the route
Install
npm install --save convexpress
Note: this library requires nodejs >= 8
Use
Define a route (convroute)
/* File: src/api/pets/get.js */
// Assuming NODE_PATH=src
const dbClient = require("services/db");
exports.path = "/pets";
exports.method = "get";
exports.description = "List pets";
exports.tags = ["pets"];
exports.responses = {
"200": {
description: "pets list"
}
};
exports.parameters = [
{
name: "status",
description: "Filter by pet status (e.g. available / not available)",
in: "query",
required: false,
type: "string"
}
];
exports.handler = async (req, res) => {
const pets = await dbClient.query(`SELECT * FROM pets WHERE status = $1`, [
req.query.status
]);
res.status(200).send(pets);
};
Register the route and serve it
/* File: src/server.js */
const express = require("express");
const convexpress = require("convexpress");
const options = {
info: {
title: "pet store",
version: "1.0.0"
},
host: "localhost:3000"
};
const api = convexpress(options)
// Serve the API's swagger definition at /swagger.json
.serveSwagger()
// Register the route (assuming NODE_PATH=src)
.convroute(require("api/pets/get"))
// Or register multiple routes at once
.loadFrom(`${__dirname}/api/**/*.js`);
const server = express()
.use(api)
.listen(process.env.PORT);
API
convexpress(options)
Create an express router object (convrouter), which the additional methods
convroute
, serveSwagger
, and loadFrom
.
Arguments
options
object: top-level properties of the swagger definition
Returns
The express router (convrouter).
convrouter.convroute(convroute)
Registers a convroute.
Arguments
convroute
object required: a convroute definition object:path
string requiredmethod
string requiredhandler
function _required__paramters
Array< object >middleware
Array< function >description
stringtags
Array< string >responses
Map< object >
Returns
The convrouter, to allow for method chaining.
convrouter.serveSwagger()
Registers the route GET /swagger.json
for serving the swagger definition, and
the route GET /swagger/
for serving the swagger UI html.
Arguments
None.
Returns
The convrouter, to allow for method chaining.
convrouter.loadFrom(pattern)
Loads and registers convroutes from files matching the specified pattern
.
Arguments
pattern
string required: glob pattern of files to load convroutes from
Returns
The convrouter, to allow for method chaining.
Contributing
See CONTRIBUTING.md.