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

news2024/11/17 0:02:38

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

大功告成~

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

今天就写到这里啦~

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

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

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【人工智能】人工智能和双曲几何

一、说明 作为人工智能技术的理论支撑,几何学是必不可少的;目前直接的几何技术有:计算几何--对集合体如点云处理有用;射影几何--对3d重构有用;双曲几何--在自然语言的词嵌入做基础数学模型,另外深度学习国外…

Intellij IDEA编写Spark应用程序的环境配置和操作步骤

本文介绍如何在win系统中使用IDEA开发spark应用程序,并将其打成jar包上传到虚拟机中的三个Ubuntu系统,然后在分布式环境中运行。 主要步骤包括: 安装Scala插件:在Intellij IDEA中安装Scala插件,并重启IDEA。创建Mave…

航空保障装备虚拟3d展览展示仿真系统助力企业降本增效

航空装备被认为是一个现代化国家核心竞争力的集中体现。航空装备制造业不仅是维护发展环境稳定的重要保障,也是推动经济转型升级的战略性产业。 3D虚拟展示技术是数字化转型中一项不可或缺的技术手段,将3D虚拟现实技术与工业制造业的有机融合&#xff0c…

chatgpt赋能python:Python第三方包安装方法详解

Python第三方包安装方法详解 为什么要安装第三方包? 在Python编程中,常常需要使用到一些额外的功能模块,但是Python自身不具备这些功能,需要通过安装第三方包来实现。例如,Python标准库中没有Jupyter Notebook工具&a…

T5、RoBERTa、悟道·天鹰、紫东太初、CPM作者谈基础模型前沿技术丨大模型科研、创业避坑指南...

导读 大语言模型日益火爆,学者们的研究方向是指明灯。那么相关大模型重要项目的主要贡献者怎么看?6月9日的北京智源大会“基础模型前沿技术”论坛邀请了T5、RoBERTa、悟道天鹰、紫东太初、CPM等重要模型工作作者出席。 图注:五位嘉宾现场讨论…

chatgpt赋能python:Python如何设置画布颜色:一份详尽指南

Python如何设置画布颜色:一份详尽指南 在计算机图形学中,画布颜色是指画布的背景颜色。当然,通过Python设置画布颜色非常简单,本篇文章将为您提供一份详尽指南。 什么是画布颜色? 在Python中创建一个画布时&#xf…

MySQL 官方示例数据库如何下载

文章结构 下载 MySQL 的示例数据库示例数据库介绍以及安装后续就是自己使用了参考网址 MySQL 提供了一些非常好的用来演示 MySQL 各项功能的示例数据库,同 Oracle 也提供了示例数据库。但是很少有人知道 MySQL 也提供,或许是因为它没有像 Oracle 一样在安…

chatgpt赋能python:Python教程:如何设置画布大小?

Python教程:如何设置画布大小? 在Python中,我们可以使用各种图形库来创建各种类型的图。有时,我们需要调整图像的大小以适应我们的需求。所以,在这篇文章中,我将介绍如何使用Python来设置画布大小。 什么…

cocos creator 帧同步游戏示例

最近闲来无事重新研究一下同步策略里面的帧同步,首先说下帧同步与状态同步的区别, 1:帧同步: 帧同步是一种多人游戏中常用的网络同步技术,用于确保不同玩家之间的游戏状态保持一致。在帧同步中,所有玩家通…

chatgpt赋能python:Python计算字符串中的小写字母

Python计算字符串中的小写字母 在搜索引擎优化中,我们经常需要计算一个文本中小写字母的数量。Python语言的强大和灵活性使得它成为实现这一目标的理想选择。在本文中,我们将介绍如何使用Python语言计算字符串中的小写字母。 了解Python字符串 在Pyth…

Nodejs三、模块化

零、文章目录 Nodejs三、模块化 1、模块化的基本概念 (1)模块化是什么 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。 (2&#xff…

基于Java汽车养护管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精…

计算机网络408题(2020-2022)

2020年 2021年 下面借此大题来分析主机H1访问Web服务器的应用场景的全部过程。 2022年 综合大题 冲突域是指一组设备共享同一段物理网络,当其中一个设备发送数据时,其他设备必须等待,以避免数据冲突。在一个冲突域中,当两个或多…

计算机网络管理 实验4(二) SNMP报文管理信息结构SMI及其规定的ASN.1分析并使用Wireshark抓包分析sysContact的相关信息

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…

关系数据库SQL数据查询

关系数据库SQL数据查询 数据查询 一、单表查询 1.查询仅涉及一个表,选择表中的若干列 [例1] 查询全体学生的学号与姓名。SELECT Sno,SnameFROM Student; [例2] 查询全体学生的姓名、学号、所在系。SELECT Sname,Sno,SdeptFROM Student;查询全部列 选出所有属…

python代码实现生成二维码

二维码结构: 从图中我们可以看出二维码结构整体划分为功能图形和编码区两大部分,功能图形又细分为:空白区、位置探测图形、位置探测图形分隔符、定位图形、校正图形,而编码区细分为:格式信息、版本信息、数据和纠错码字…

Flutter进阶-List数组的深浅拷贝问题

浅拷贝:拷贝指针深拷贝:拷贝一份新的对象 浅拷贝出现的问题:操作一个数组另一个数组也发生改变 List list [1, 2, 3, 4, 5]; List copyList list; copyList[0] abc; print(list);///打印: [abc,2,3,4,5] print(copyList);///打…

机器学习——博客推荐系统

前言 在当今的信息时代,技术博客已成为知识、见解和娱乐的重要来源。随着博客内容的日益丰富,找到最相关和最引人入胜的文章对用户来说可能是一项艰巨的任务。为了应对这一挑战,我们需要一个全面的博客推荐系统,利用尖端技术和机…

RabbitMQ + SpringCloud使用及避坑(大章)

RabbitMQ 的开发语言是Erlang,它的源码阅读起来学习成本太高了,所以这里就不详细看了,本次主要是结合springCloud 的项目来真正使用RabbitMQ 的几种交换器,还有一些业务场景的模拟,最主要的还是避坑。 为什么说是避坑…

JavaSE进阶--玩转IO流

文章目录 前言一、File类介绍1、概念引入2、实际应用2.1 操作文件2.2 操作文件夹 二、IO流介绍三、字符流1、读文件1.1 一次读一个1.2 一次读多个,使用char数组去装 2、写文件2.1 一次写一个2.2 一次写完,使用字符数组 3、文件复制3.1 综合应用3.2 使用缓…