express-routie
TypeScript icon, indicating that this package has built-in type declarations

1.0.7-1 • Public • Published

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"));
    }
  }
}

Package Sidebar

Install

npm i express-routie

Weekly Downloads

2

Version

1.0.7-1

License

MIT

Unpacked Size

7.25 kB

Total Files

4

Last publish

Collaborators

  • unkrush