전체 스택 항목 | 작은 책장 | 서버 개발 -Koa2 매개 변수 수표 처리

왜 우리는 보정 파라미터를 어떻게해야합니까

개발, 여부를 App개발 또는 服务器接口개발, 우리가 수신되는 사용자 데이터를 예측 할 수없는, 参数(数据)校验그것은 개발의 필수적인 부분입니다.

예를 들어, 같은 App등록 페이지 로그인 양식을 제출, 우리는 좋은 작업 판사 층을 수행해야합니다. 이러한 用户名是否为空,用户密码是否为空,密码长度是否足够等等같은 : .

그것을 달성하기 위해 더 우아한 방법이 있나요?

우아함을 달성하는 방법

여기를 기반으로 사용 validator.js의 패키지를 Lin-Validator, 소스가됩니다 七月老师제공.

Lin-Validator그것은 기능을 가지고 있습니다 :

  • 교정 매개 변수, header,query,path,body모든 교정 매개 변수

매개 변수 확인

검사기 문 :

const { LinValidator, Rule } = require('lin-mizar');
/**
 * 正整数 参数校验
 */
class PositiveIntegerValidator extends LinValidator {
    constructor() {
        // 使用 this 一定要使用 super
        super()
        // 数组,且关系,也就是数组中所有都满足才能通过
        this.id = [
            new Rule('isInt', '需要是正整数', {
                min: 1
            }),
        ]
    }
}

/**
 * 更新用户信息
 */
class UpdateInfoValidator extends LinValidator {
  constructor () {
    super();
    this.email = [
      new Rule('isOptional'),
      new Rule('isEmail', '电子邮箱不符合规范,请输入正确的邮箱')
    ];
    this.nickname = [
      new Rule('isOptional'),
      new Rule('isLength', '昵称长度必须在2~10之间', 2, 10)
    ]
  }
}
module.exports = {
  PositiveIntegerValidator,
  UpdateInfoValidator
};

사용자 정의 별칭

// 获取书籍的喜欢状态
router.get('/like', new Auth().m, async ctx => {
    // 接口中传递的参数是`bkid`,为了复用 PositiveIntegerValidator 对 id 的校验
    // 这里使用了自定义别名 id: 'bkid' 来完成验证器的调用
    const v =await new PositiveIntegerValidator().validate(ctx, {
        id: 'bkid'
    })
    const like = await Like.userLikeIt(
        ctx.auth.uid, v.get('query.bkid'))
    ctx.body = like
})

자세한 사용

으로 npm설치하여 린 - MIZAR을

package.json추가 lin-mizar초기화 될 수 있습니다 :

"dependencies": {
    "lin-mizar": "^0.2.1"
  }

당신이 검사기를 사용할 파일에 도입

const { Rule, LinValidator, isNotEmpty } = require('lin-mizar');

[ 세부 사항 참조 : TaleLin / LIN-CMS-KOA 에서 /app/validators/], 쉽게 발견 편리 star지지 파를.


조언은 마이크로 편지를 추가하십시오 : 빛을 애타게.
그림 삽입 설명 여기

추천

출처www.cnblogs.com/gdragon/p/11829656.html