# koa-verification

> Parameter verification for the interface

Latest version **1.0.2** (published 2020-07-08) · ISC license · 0 weekly downloads

## Install

```sh
npm install koa-verification
pnpm add koa-verification
yarn add koa-verification
bun add koa-verification
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2020-07-08 |
| First published | 2020-07-02 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 2 |
| Author | lw |
| Maintainers | blingweiwei |
| Keywords | parameter, verify |

## Links

- npm: https://www.npmjs.com/package/koa-verification
- Repository: https://github.com/blingwei/koa-verification
- Homepage: https://github.com/blingwei/koa-verification#readme
- Issues: https://github.com/blingwei/koa-verification/issues
- npm.io page: https://npm.io/package/koa-verification

## Dependencies (1)

- [validator](https://npm.io/package/validator.md) ^13.1.1

## Recent versions

- 1.0.2 (latest) — 2020-07-08
- 1.0.1 — 2020-07-02
- 1.0.0 — 2020-07-02

## README

# koa-verification

## 安装

`koa-verification` **requires node 8** or above.

```
npm install -S koa-verification
```

## 快速开始

```
const app = new Koa();
const {
    Rule,
    Position,
    Verification
} = require('koa-verification')


const v = new Verification();

let pathRule = new Rule({
    position: Position.query,
    name: 'id',
    rule: [
        {
            fn: 'isInt',
            msg: '必须是整形数'
        },
        {
            fn: 'isLength',
            options:{
                min: 2,
                max: 10
            },
            msg: '长度必须在2到10之间'
        }
    ]

})

pathRule.add({
    position: Position.body,
    name: 'name',
    rule: {
        fn: 'isEmpty',
        antonym: true, //让规则验证结果取反
        msg: 'name不能为空'
    }
})

pathRule.add({
    position: 'body',
    name: 'sex',
})

v.use('/path', 'POST', pathRule)
 
app.use(v.verifications());
app.listen(3000);
```

koa-verification 是基于koa2的一个中间件，它是为了那些需要严格规范接口参数的api所设计的。



当你需要为一个接口验证参数时，如post方式访问的 '/path'接口，你可以声明一个验证器：

`v.use('/path', 'POST', pathRule)`

其中 pathRule是你这个接口的参数校验规则，你可以这样声明

`let pathRule = new Rule(opt)`

最后  

`app.use(v.verifications())`



## 要点

- `Rule`

  Rule中的opt有3个参数，分别是  position, name 和 rule

  1. `positon`

     `posion` 代表了参数所在的位置  $详情请参考Position$

  2. `name`   

     `name` 表示该参数的名字

  3. `rule`

     `rule` 表示该参数的校验规则，每一个`rule`对象有4个属性：`fn`，`options`，`antonym`， `msg`

     其中 `fn`表示的是验证的函数， 验证函数分为2中，一种是自己创建的验证函数，一种是基于[validator](https://www.npmjs.com/package/validator) 包的验证函数，当你想要用validator包的验证函数时，只需要传入对应函数的字符串名字。如你想使用validator包下的 `isInt` 函数，只需要  `fn : 'isInt'` 就能使用。

     `options` 属性 表示传入验证函数中的参数

     `antonym` 属性 表示时候对验证函数的结果取反。之所以设计这个属性，是因为有些验证函数如[validator](https://www.npmjs.com/package/validator) 包下的`isEmpty`，当参数为空时它的结果为true，当你希望你的参数不为空时，你只需要把`antonym` 属性设为 true即可。默认情况为false

     `msg `  属性表示参数验证失败时的错误提示信息

     

     当不设置 rule属性时，代表该参数不需要验证。当你需要添加其他参数的验证信息时，只需要调用

     `Rule.add(opt)` 函数。

     

     

- Position

  body:   代表requestBody的参数

  query

  header

  params

- ctx.v

  当参数验证都通过时，会在ctx.v上挂载验证过的参数

---
_Source: https://npm.io/package/koa-verification · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
