分享一个express参数验证组件
发布于 7 年前 作者 sunkuo 5423 次浏览 来自 分享

缘起

在项目开发中,前后端分离,后端采用express提供api接口。有一个非常常见的需求是接口参数验证,比如

  • 获取用户地址列表,需要判断用户是否以query形式传入token、limit、skip

原始做法是在业务函数中判断,但是这样太麻烦了

需求

我们需要这样的一种框架,他需要满足下面几点

1.基于配置的参数验证

这个框架需要做到不需要在业务逻辑里判断,只需要提供一个配置json就可以自动进行验证。例如上面的例子中,只需要提供 Screen Shot 2017-08-15 at 8.04.11 PM.png

2.灵活,可以满足各类参数验证

例如,我们需要判断这个limit是一个整数,并且范围是10-50,skip也是一个整数,范围是0-100 再例如,我们需要要求token、skip、limit这三个参数都必须放在query里面 再例如,在一个Post接口里面,我们需要要求参数在body里面,并且还是自动解析的

快速使用

基于上面的需求,提高开发效率,开发了适用于express的joi-router。再说他的特性之前,先看他是怎么用的 Screen Shot 2017-08-15 at 8.10.28 PM.png 上面这里例子里,验证的是query参数必须有一个userId,并且userId必须是字母和数字的组合,长度在3个字节到30个字节之间。 再看个复杂点的例子 Screen Shot 2017-08-15 at 8.15.37 PM.png 是不是用起来很简单,尤其是参数特别多的时候,并且组合在一起的时候。

Feature

这个项目有如下几个特点

  • Api参数验证
  • Api返回结果格式验证
  • 使用例子
  • 完善的测试代码(代码测试覆盖率90%以上)
  • 持续集成

后续改进

未来还会提供一种功能,就是根据你的代码,生成接口文档。

项目地址

欢迎大家Follow和Star,更欢迎你参与进来提出意见,提出PR Joi-router https://github.com/sunkuo/joi-router 你可以在github上看到安装使用说明

引用

joi koa-joi-router

3 回复

我也用过这个,但是这个joi 返回的格式很奇怪啊,不知道可以定制不。 alt text

想知道如果验证错误后,的输出如何关闭。。

回到顶部