node-input-validator是什么?
- 简称NIV (Node Input Validator)
- 用于node.js的验证库
- 使用它可以扩展库以添加自定义规则。
- npm NIV文档
使用方法
我们以strapi 4.9 版本项目为例,来试用一下它对我们接口的校验规则
下载依赖
npm i node-input-validator
在项目中创建全局中间件
使用命令创建
npx strapi generate
设置中间件名字,以及所属
直接手动创建也可以,我们就在项目下创建这个文件,路径:src\middlewares\validate.js
编写中间件代码
'use strict';
const niv = require('node-input-validator');
/**
* `validate` middleware
*/
module.exports = (config, { strapi }) => {
return niv.koa()
// 中间件代码写法示例
// return async (ctx, next) => {
// strapi.log.info('In validate middleware.');
// await next();
// };
};
此步骤我们是参考文档中的这个部分:
注册中间件
config\middlewares.js
module.exports = [
'global::validate',
];
给已经存在的接口添加单独的接口参数校验
PS C:\Users\test-api> npx strapi generate
? Strapi Generators middleware - Generate a middleware for an API
? Middleware name validate
? Where do you want to add this middleware? Add middleware to an existing API
? Which API is this for? test-api
√ ++ \api\test-api\middlewares\validate.js
添加参数校验逻辑
\api\test-api\middlewares\validate.js
'use strict';
/**
* `validate` middleware
*/
module.exports = (config, { strapi }) => {
return async (ctx, next) => {
await ctx.validate({
xiaojin:'required', // 需要这个参数
test: 'required', // 需要这个参数
}, ctx.query)
await next();
};
};
路由中间件校验配置
src\api\test-api\routes\cloud.js
module.exports = {
routes: [
{
method: 'GET',
path: '/test',
handler: 'cloud.test',
config: {
policies: [],
middlewares: ['api::test-api.validate'],
},
},
],
};
接口调用测试
访问http://localhost:1337/api/test,我们很明显看到这个访问没有经过参数校验
大功告成~
我们试一下添加参数访问接口
今天就写到这里啦~
- 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢