koa-matic v1.4.1
Koa-Matic
$ npm i koa-matic这是 Koa 的路由接口参数自动化处理中间件,他附加在 Koa-router 上,目的是帮助你自动注册路由和处理转换请求参数类型,适用于中小型后台前后端分离的后端开发中间件。
不同于大多数 MVC 框架的结构,并没有采用 路由=>控制器=>业务层 的处理方式,而是注册多个 业务层模块 自动帮你以 类名/方法名 的方式注册路由,并帮你自动处理 参数。
例子:
import Koa from 'koa'
import Router from 'koa-router'
import Body from 'koa-body'
//引入Koa-matic
import Matic from 'koa-matic'
//引入你的应用层
import Main from './Main.js'
const router = new Router()
const matic = new Matic(router,{
argsError(code, msg) {}, //错误时处理函数 this 指向 Context
returnValue(value){} //返回值处理函数 this 指向 Context
})
//注册应用
matic.use('/api', [Main]) //可注册多个[Main,App],use方法也可多次调用注册多个前缀接口
app.use(Body({ multipart: true }))
app.use(router.routes())
app.listen(8080)定义方式
Mian.js
export default class Main {
static getUser = { name: 'string', id: 'int' }
async getUser(name, id) {
}
}定义一个静态属性 getUser 用来描述接口参数,定义一个方法 getUser 处理逻辑层,当静态属性和方法重名时便会仍为是注册路由接口。
其中路由注册为:/api/Main/getUser
最终调用时会从请求 body,中合并 GET,POST,FILES 三者,并拿到同名的参数调用 getUser 方法,调用前会做类型的转换,需要依赖 koa-body 中间件。
如参数 id 转换类型为 Number (不带小数点)。
支持的类型
string
值:String
int
值:Number,不带小数点,四舍五入
float
值:Number,保留小数点
boolean
值:Boolean
date
值:Date对象
file
值:File对象
files
值:File对象[]
可选参数
大多数情况下,某些参数是可选的,即不强制提交时带上,可以通过 类型? 声明
export default class Main {
static getUser = { name: 'string', id: 'int?' }
async getUser(name, id = 20) {
}
}如果请求参数带有 id 则传递 id 的值调用,如果没有则使用默认值调用
限制参数范围
可以在参数类型后空格后添加一个值限制范围,受到约束的范围类型如下
string 12
字符串长度不得大于12
int 0
最小值不得小于0,
int 0,9
最小值不得小于0,最大值不得大于9
float
同 int 的约束
file image/
文件类型必须是 image/ 开头,如 image/png
file image/,20400
文件类型必须是 image/ 开头,且文件大小不得大于 20400
files
同 file 的约束
export default class Main {
static getUser = { name: 'string 8', id: 'int? 1,9',file:'file image/,20400' }
async getUser(name, id = 20,file) {
}
}构造函数
每个接口调用时都会实例化构造函数,传递参数: Koa 的 Context 上下文和 一个函数 end
调用 end 函数会终止方法被调用,可传递一个值为返回值。
export default class Main {
constructor(context, end) {
end('失败')
//此时getUser不会被调用
}
static getUser = { name: 'string', id: 'int?' }
async getUser(name, id = 20) {
}
}配置说明
实例化 Matic 时需要传递一个配置参数,他有两个属性参数:argsError(参数错误处理) 和 returnValue (接口返回值处理),他俩均是一个函数,在被调用时内部 this 对象绑定为 Koa 的 Context 上下文。
const matic = new Matic(router,{
argsError(code, msg) {}, //错误类型:code 错误类型(0=参数为空,1=长度错误,2=参数不符合规则) msg 参数信息
returnValue(value){} //value 每个接口的返回值
})依赖重新定义这两个函数,你可以处理错误和处理接口的返回值。
其他
有问题可以通过邮箱联系:2279499274$qq.com