express-routie
Express API endpoints made easier
Last updated 3 years ago by zolbooo .
MIT · Original npm · Tarball · package.json
$ cnpm install express-routie 
SYNC missed versions from official npm registry.

express-routie

npm version npm total downloads

Express API endpoints made easier

Quick start

npm i express-routie
const express = require("express");
const routie = require("express-routie");

const Joi = require("joi");

function implementMe() {
  return {error: "Not implemented yet"};
}

const app = express();
routie(app, {
  "/api/test": {
    method: "get",
    handler: implementMe,
    schema:  Joi.object().keys({
      key: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required()
    })
  }
});
app.listen(3000, () => console.log("Server started on port 3000"));

Reference

const routie = require("express-routie");
routie(app, routes)

app - Express app to add routes

routes - Route definitions in format:

{
  "/address": {
    method: "get",
    schema: schema
  }
}

You also can pass array, if you need multiple handlers for single route:

{
  "/address": [{
    method: "get",
    schema: schema
  }, {
    method: "post",
    schema: schema
  }]
}

method - HTTP method for current route, can be one of the following:

get
post
put
patch
delete
del
all

schema - Joi schema to validate req.body or req.query, if method is "get". You can also pass validator function, it should return boolean.

Examples:

Joi.object().keys({
  key: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/).required()
}).with("key")
(requestBody) => typeof requestBody.key === "string" && /^[a-zA-Z0-9]{3,30}$/.test(requestBody.key)

getType - Function to determine request type(optional), if it's provided, it will get result and invoke appropriate handler.

Example:

{
  "/address": {
    method: "get",
    schema: schema,
    getType: () => "admin", // handler["admin"] will be invoked
    handler: {
      "admin": adminHandler
    }
  }
}

handler - Single function or map of handlers, must return Object or promise returning Object. Example:

{
  "/hello": {
    method: "get",
    handler: () => ({hello: "world"})
  }
}

You can send response manually by calling finish function:

{
  "/hello": {
    method: "get",
    handler: (req, finish) => {
      if (req.query.failed === "true")
        finish(res => res.redirect("http://example.com/failed"));
    }
  }
}

Current Tags

  • 1.0.7-1                                ...           latest (3 years ago)

12 Versions

  • 1.0.7-1                                ...           3 years ago
  • 1.0.7                                ...           3 years ago
  • 1.0.6-1                                ...           3 years ago
  • 1.0.6                                ...           3 years ago
  • 1.0.5-1                                ...           3 years ago
  • 1.0.5                                ...           3 years ago
  • 1.0.4-1                                ...           3 years ago
  • 1.0.4                                ...           3 years ago
  • 1.0.3                                ...           3 years ago
  • 1.0.2                                ...           3 years ago
  • 1.0.1                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (1)
Dev Dependencies (3)
Dependents (0)
None

Copyright 2014 - 2021 © npmmirror.com |