前端怎么使用node-input-validator给接口添加参数校验(以strapi 4.9为例)
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,我们很明显看到这个访问没有经过参数校验
大功告成~
我们试一下添加参数访问接口
今天就写到这里啦~
- 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
- 大家要天天开心哦
欢迎大家指出文章需要改正之处~
学无止境,合作共赢
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决