前端怎么使用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,我们很明显看到这个访问没有经过参数校验

大功告成~

我们试一下添加参数访问接口

今天就写到这里啦~

  • 小伙伴们,( ̄ω ̄( ̄ω ̄〃 ( ̄ω ̄〃)ゝ我们明天再见啦~~
  • 大家要天天开心哦

欢迎大家指出文章需要改正之处~
学无止境,合作共赢

在这里插入图片描述

欢迎路过的小哥哥小姐姐们提出更好的意见哇~~

猜你喜欢

转载自blog.csdn.net/tangdou369098655/article/details/131256049
4.9
今日推荐