成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

koa-decorate

goji / 2221人閱讀

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

Decorator

Kind: Exported class

new Decorator([opts])

Create a new decorated router.

Param Type Description
[opts] Object
[opts.router] Object koa-router instance
[opts.controllers] Object route controller classes

Decorator.routes ? function

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/98317.html

相關(guān)文章

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<