V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sunkuku
V2EX  ›  Node.js

分享一个 express 参数验证组件

  •  
  •   sunkuku · 2017-08-15 20:30:13 +08:00 · 3690 次点击
    这是一个创建于 2689 天前的主题,其中的信息可能已经有所发展或是发生改变。

    缘起

    在项目开发中,前后端分离,后端采用 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

    2 条回复    2017-08-15 21:33:26 +08:00
    wotemelon
        1
    wotemelon  
       2017-08-15 20:45:22 +08:00 via Android
    ajv 似乎挺不错的,试试你这个。写参数验证着实头疼烦琐无聊
    marvinwilliam
        2
    marvinwilliam  
       2017-08-15 21:33:26 +08:00
    我们这边也用的 ajv,json-schema 毕竟还是有个通用规范,用那个配置也还算是挺方便的.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4390 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:06 · PVG 12:06 · LAX 20:06 · JFK 23:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.