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
阅读 1588·2021-11-24 09:39
阅读 1893·2021-11-22 15:25
阅读 3874·2021-11-19 09:40
阅读 3408·2021-09-22 15:31
阅读 1423·2021-07-29 13:49
阅读 1358·2019-08-26 11:59
阅读 1432·2019-08-26 11:39
阅读 1030·2019-08-26 11:00