Skip to content

Repository files navigation

@koa-lite/controller

npm package

install

$ yarn add @koa-lite/controller

demo

real demo: hotchcms

  • $ npm install
  • $ npm start

use

// controller.tsimport{Prefix,Tag,Get,Summary,Query}from'@koa-lite/controller'
@Prefix('/ucenter')exportdefaultclassUser{
@Tag('User')
@Get('/user')// or request.get('/user'), request('get', '/user')
@Summary('User list')
@Query(Joi.object({name: Joi.string().required().description('name'),}))// check.query()asyncsms(ctx: BaseContext){ctx.body={}}}// router.tsimport{Controller,InjectHandle}from'@koa-lite/controller'importUserfrom'./controller.ts'// 包装函数InjectHandle(({ fn })=>fn)constrouter=newController({prefix: '/v1',docs: {title: '接口文档 - 客户端',version: 'v1',description: '业务接口文档 - by Hotchcms',securities: [{type: 'headers',key: 'Authorization',// 自动注入token等信息value: function(data){varret=(datainstanceofObject)&&data.retreturn/^Bearer\s/.test(ret) ? ret : ''},},{type: 'headers',key: 'x-device-id',value: '10001',}],}}).controllers([User]).get('/',ctx=>{ctx.body='API V1'})// app.tsapp.use(router.routes())

api

  • Prefix()
  • Get()
  • Post()
  • Put()
  • Delete()
  • Body
  • Query
  • Params
  • Headers
  • Middle([])
  • Summary()
  • Tag()

About

整合koa-router、joi,采用注解方式开发业务逻辑,实现参数验证、中间件绑定、接口文档生成等功能。

Resources

Stars

5 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages