首页 > 编程语言 >前端怎么使用node-input-validator给接口添加参数校验(以strapi 4.9为例)

前端怎么使用node-input-validator给接口添加参数校验(以strapi 4.9为例)

时间:2023-06-22 23:23:46浏览次数:65  
标签:node 为例 middleware 4.9 校验 strapi api test validate

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

大功告成~

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

今天就写到这里啦~

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

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

在这里插入图片描述

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

标签:node,为例,middleware,4.9,校验,strapi,api,test,validate
From: https://www.cnblogs.com/sugartang/p/17480627.html

相关文章

  • 以阿里社招Android面试为例,详讲面对面试官到面试中到面试结束
    前言今天有个小伙伴和我说,Android技术还行,主要是对面试没什么把握,小编想了想,不该是多半面试题都会迎难而解,怎么会什么把握呢?但仔细又一想,技术和面试也是两回事,技术可以也不代表面试就可以过,那咱们就来好好叨叨该如何去面试面对面试官我在网上看到了很多面试官的分享,他们面过上百人,......
  • 什么是 Kubernetes cluster 的 Node affinity
    Nodeaffinity在概念上类似于nodeSelector,它允许您根据节点标签来限制Pod可以调度到哪些节点上。有两种类型的节点亲和性:requiredDuringSchedulingIgnoredDuringExecution:除非满足规则,否则调度程序无法将Pod调度到节点上。这类似于nodeSelector,但具有更具表达性的语法。pre......
  • 关于 Java 和 node affinity 这个概念的联系
    在Java开发领域,术语"nodeaffinity"通常不是与Java语言本身直接相关的概念。然而,在某些特定的上下文中,可以将"nodeaffinity"应用于Java应用程序的部署和调度方面。在Java开发中,"nodeaffinity"可能指的是以下几个方面:服务器亲和性:在分布式环境中部署Java应用程序时,可以考虑将......
  • 基于Node.js的分布式应用程序架构设计与最佳实践:实现高效、可扩展的分布式系统
    目录基于Node.js的分布式应用程序架构设计与最佳实践:实现高效、可扩展的分布式系统随着互联网的普及和发展,分布式系统已经成为现代应用程序中不可或缺的一部分。而Node.js作为当前最流行的JavaScript框架之一,其在分布式系统中的使用和优化也越来越广泛。在本文中,我们将介绍基......
  • node生成token报错:secretOrPrivateKey has a minimum key size of 2048 bits for RS25
    提要:在node生成token时利用用jsonwebtoken,利用非对称加密的生成token  constjwt=require("jsonwebtoken"); constprivateKey=fs.readFileSync("./keys/private.key");constpublicKey=fs.readFileSync("./keys/public.key");consttok......
  • k8s node的几种状态
    Kubernetes(K8s)中的节点有几种可能的状态。以下是一些常见的节点状态:1.Ready(就绪):节点正常运行且准备好接受工作负载。这是节点的正常工作状态。2.NotReady(未就绪):节点无法接受工作负载,可能是由于网络问题、资源不足或其他故障导致的。3.OutOfDisk(磁盘空间不足):节点磁盘空间不足......
  • 完事后再聊应用场景,K8S调度实战:Node Affinity
    写在开篇NodeAffinity(节点亲和性)允许在节点级别上指定一些条件来控制Pod被调度到哪些节点上。它还有两种策略,本篇通过实战演示如何使用两种策略来控制Pod的调度。测试环境还是老样子,本次实战继续使用以下K8S集群环境进行:节点主机名IPMaster节点k8s-b-master192......
  • K8S调度:实战完nodeSelector后,再谈应用场景。
    Part1写在开篇nodeSelector是什么鬼?这么说吧,假设有一个K8S集群,其中有多个节点,并且想将一个特定的应用程序只部署在具有特定标签的节点上。这时候就可以在Pod的定义中添加nodeSelector字段,指定一个键值对,例如app:my-app。然后,K8S调度器将查找具有app=my-app标签的节点,并将该Pod调......
  • kubeadm搭建单master多node的k8s集群
    一、实验环境准备镜像选择:CentOS-7-x86_64-DVD-2009.iso配置:4核、6G内存、80G硬盘兼容性:ESXI7.0及更高版本服务器信息:k8s集群角色ip主机名安装的组件控制节点10.104.26.192hqs-masterapiserver、controller-manager、scheduler、etcd、kube-proxy、docker、ca......
  • [ERROR] No loader is configured for ".node" files: node_modules/fsevents/fsevent
    解决方法:修改项目中./node_modules/fsevents/fsevents.js文件//修改constNative=require("./fsevents.node")//更改为constNative=window.require("./fsevents.node")......