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