koa-mount-routes
A koa package to load routes automatically from file system.
Why?
- Avoid multiple router definition codes
- Reduce check point with auto-defined routes while debugging
- CoC(Configuration over Convention)
Usage
After yarn add koa-mount-routes
or npm install koa-mount-routes --save
:
const path = ;const Koa = ;const mountRoutes = ; const app = ;; app;
API Doc
;
How to write Controllers
You must export an object whose keys are last part of routes and values are objects (or array) with HTTP method and handlers. For example:
// FileName: controllers/weibo.js moduleexports = // when value is a function or an array of functions, the HTTP method would be default value GET '/': async { ctxbody = 'Weibos Index'; } // also you can provide one more handlers with an array of functions: these handlers except last one are called middlerwares in Koa '/getArr': async { ctxbody = 'GET for one more handlers'; } // also you can make URL params '/:id': // explicitly identifing an HTTP method can never be wrong { ctxbody = `get weibo: `; } post: async { ctxbody = `post weibo: `; } // another example for usage of middlerwares '/temp': delete: async { ctxmyOwnVar = 'this is a middleware.'; await ; } async { ctxbody = `ordinary api`; } ;
At last, routes would be combined with ${urlPrefix} + ${pluralized file name of controllers} + ${identified keys}
. Therefore, examples above would mount these routes:
GET - /api/v1/weibos/GET - /api/v1/weibos/getArrGET - /api/v1/weibos/:idPOST - /api/v1/weibos/:idDELETE - /api/v1/weibos/temp
You are welcomed to review test.js and controllers dir in this project for more information of usage.
Attention
-
As Koa does not provide a router by default, we pick koa-router as the router.
-
You can use
DEBUG=koa-mount-routes
to get to know what routes are mounted.