simplify express router


Keywords
simple, express, router, nodejs
License
ISC
Install
npm install uno-api@1.2.4

Documentation

uno-api

npm version build status install size npm downloads

simplify express router

#What's New in 1.2.0

  • getAllRoutes, for get all list route in uno-api

Boilerplate Uno-Api

This boilerplate using uno-api, you can learn here how to use uno-api

Thanks To: masb0ymas

installing

$ npm install uno-api

Example

var router = express.Router();
const UnoRouter = require('uno-api').Router
const simpleRouter = new UnoRouter(router)
const MiddlewareAuth = require('./controllers/MiddlewareAuth')
const UserController = require('./controllers/UserController')
function mainPage(req, res, next) {
  res.render('index', { title: 'Express' });
}

simpleRouter.create({
	baseURL: '/user',
	get: UserController.getUser,
	getWithParam: [
		[':UserId', UserController.getUserByUserId], //ex: http://localhost:3000/user/1
		[':UserId/:RoleId', MiddlewareAuth.main, UserController.getUserByRoleId] //ex: http://localhost:3000/user/1/5
	],
	post: {
		middleware: MiddlewareAuth.multer([{ name: 'file', maxCount: 1 }]), //or with array [MiddlewareAuth.multer([{ name: 'file', maxCount: 1 }])],
		callback: UserController.createUser
	},
	put: UserController.updateUser,
	delete: UserController.deleteUser,
})

unoAPI

Key Type Object Key
Router Function configRouter
OPTIONS Object

unoApi.Router(config)

config

Key Type Desc
title string title for getAll
baseURL string baseURL for this Router
middleware function, array function middleware for this Router
wrapperRequest function wrapperRequest / wrapper callback
//example

const simpleRouter = new unoApi.Router({
	title: 'RoutePublic', // this is grouping name routes for getAllRoutes
	baseURL: '', // you can define global baseURL here for this route
	middleware: [Middleware1, Middleware2], // you can define middleware here
	wrapperRequest: wrapperApiPublic // handle all callback by this function, ex: wrapperApiPublic(callback)
})

.Router API

Key Type Desc
getAllRoutes static function to get all Routes Uno-Api
create function to create route

simpleRouter.create(createConfig)

create config

Key Type Desc
title string grouping name for getAllRoutes
baseURL string url API
get function, array function, object get method
getWithParam array get method
post function, array function, object post method
postWithParam array post method
put function, array function, object put method
putWithParam array put method
delete function, array function, object delete method
deleteWithParam array delete method
middleware function / array function middleware
overrideMiddleware boolean override middleware UnoApi.Router
wrapperRequest function wrapperRequest / wrapper callback
simpleRouter.create({
    title: 'ApiMasterData',
    baseURL: '/master',
    get: myGetFunction, 
    post: [myMiddlewarePost, myPostFunction],
    put: {
      middleware: [myMiddlewarePut],
      callback: myPutFunction,
      overrideMiddleware: true
    },
    delete: [myMiddlewareDelete, myDeleteFunction, UnoApi.OPTIONS.OVERRIDE_MIDDLEWARE], // like put
    getWithParam: [
      [':id', myMiddlewareGetParam, myGetParamFunction], //ex: http://example.com/master/1
      [':id/:userid', myMiddlewareGetParam, myGetParamFunction, UnoApi.OPTIONS.OVERRIDE_MIDDLEWARE], //ex: http://example.com/master/1/299
      ['detail', myMiddlewareGetParam, myGetParamFunction, UnoApi.OPTIONS.OVERRIDE_MIDDLEWARE], //ex: http://example.com/master/detail
    ], // this config same for all route method get, post, put, delete (withParam)
    middleware: [MiddlewareMasterData],
    overrideMiddleware: true, // this will remove all UnoApi.Router middleware only for this API
    wrapperRequest: wrapperRequestMaster // wrapperRequest only for this API master, this will replace wrapperRequest UnoApi.Router
})

method config

method config

Key Type Desc
callback function callback method
middleware function / array function middleware
overrideMiddleware boolean override middleware UnoApi.Router and .create
wrapperRequest function wrapperRequest for this method only
simpleRouter.create({
	baseURL: '/public',
	get: {
            middleware: myGetMiddleware,
            callback: myGetFunction,
            overrideMiddleware: true,
            wrapperRequest: wrapperRequestMethod //
	},
	put: {
            middleware: myPutMiddleware,
            callback: wrapperRequestMethod(myPutFunction), //this is same like using wrapperRequest
            overrideMiddleware: true,
	}
})

TO-DO

  • function withoutMiddleware(...fnName || fn) (proposed: 14 April 2020)
  • Generate all API list for documentation (proposed: 14 April 2020)
  • Edit Documentation By UI (proposed: 14 April 2020)