왜 우리는 보정 파라미터를 어떻게해야합니까
개발, 여부를 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
지지 파를.
조언은 마이크로 편지를 추가하십시오 : 빛을 애타게.