koa-decorate
Provides decorators for router middleware of koa.Install Config
Koa-decorate is based on the decorator provided by es7,
but nodejs does not support the decorator temporarily.
so we need to use typescript to develop our application,
we can run our typescript directly through ts-node without offline compiling.
npm install --save-dev ts-node nodemon
nodemon.json
{ "restartable": "rs", "ignore": [ ".git", "node_modules" ], "verbose": true, "execMap": { "ts": "ts-node" }, "watch": [ "controller", "app.ts" ], "ext": "ts" }API Reference
koa-decorate
Decorator ⏏
[new Decorator([opts])](#module_koa-decorate--Decorator_new)
.routes ⇒ function
decorator
http-method ⇒ @Get|@Post|@Put|@Delete|@All
path ⇒ @Path
parameter ⇒ @Param|@Query|@Body|@Ctx|@Next
hook ⇒ @Before|@After
Controller
DecoratorKind: Exported class
Create a new decorated router.
Param | Type | Description |
---|---|---|
[opts] | Object | |
[opts.router] | Object | koa-router instance |
[opts.controllers] | Object | route controller classes |
Returns router middleware which dispatches a route matching the request.
Kind: instance property of Decorator
Example
Basic usage:
// app.ts import Koa from "koa"; import Router from "koa-router"; import Decorator from "koa-decorate"; import Controller from "./controller"; // Route controller classes const routes = new Decorator({ router: new Router(), controllers: Controller }).routes(); app.use(routes);http-method ⇒ @Get|@Post|@Put|@Delete|@All
Create @Verb methods to match against HTTP methods, where Verb is one of the HTTP verbs
such as @Get or @Post etc.
Additionaly, @All can be used to match against all methods.
Example
// CatController.ts import { Path, Get, Post } from "koa-decorate"; @Path("/api/cat") class CatController { @Get @Path("/info") getCatInfo () { return { id: 1, name: "Lina Weiss", type: "Norwegian Forest Cat" } } @Post @Path("/info/") CreateCat () { return { status: 200, data: { id: 2 }, message: "Created successfully..." } } } export { CatController };path ⇒ @Path
Match URL patterns to callback functions or controller actions using @Path,
when authFunc returns true, controller can execute logical actions, otherwise access denied.
Param | Type | Description |
---|---|---|
path | String | |
[authFunc] | Function => Boolean | route callback |
Example
// CatController.ts import { Path, Get } from "koa-decorate"; @Path("/api/cat") class CatController { @Get @Path("/info/:id", (ctx) => Number(ctx.params.id) === 1) getCatInfo () { return { id: 1, name: "Lina Weiss", type: "Norwegian Forest Cat" } } } export { CatController };parameter ⇒ @Param|@Query|@Body|@Ctx|@Next
Create @Parameter decorators, where Parameter is one of the parameter-names such
as @Param, @Query, @Body etc.
Param | Type | Description |
---|---|---|
name | String |
Example
// CatController.ts import { Path, Get, Post, Param, Query, Body, Ctx } from "koa-decorate"; @Path("/api/cat") class CatController { @Get @Path("/info/:type") getCatInfo ( @Param("type") type: string, @Query("info") info: string) { return { type, info } } @Post @Path("/info/:type") CreateCat ( @Param("type") type: string, @Body("requestBody") requestBody: any) { return { status: 200, data: Object.assign(requestBody, { type }), message: "Created successfully..." } } } export { CatController };hook ⇒ @Before|@After
When the routing match is correct, the hookFunc is used to deal with
the transactions @Before and @After processing.
Param | Type | Description |
---|---|---|
[hookFunc] | Function | callback hook |
Example
// CatController.ts import { Path, Get, Param, Query, Before, After } from "koa-decorate"; @Path("/api/cat") class CatController { @Get @Path("/info/:type") @Before((ctx, next) => { // ... }) @After((ctx, next) => { // ... }) getCatInfo ( @Param("type") type: string, @Query("info") info: string) { return { type, info } } } export { CatController };Controller
Kind: The dictionary of route controller classes
Example
// Controller/index.ts import { CatController } from "./cat"; export default { Cat: CatController };Licences
MIT
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98317.html
阅读 1457·2021-11-24 09:39
阅读 1774·2021-11-22 15:25
阅读 3728·2021-11-19 09:40
阅读 3283·2021-09-22 15:31
阅读 1287·2021-07-29 13:49
阅读 1191·2019-08-26 11:59
阅读 1307·2019-08-26 11:39
阅读 918·2019-08-26 11:00