Nodejs制作自定义中间件

2023-10-27

对于Nodejs的中间件我想各位小伙伴都有所了解,下边我就以制作一个自定义的处理表单数据的中间件为例,告诉大家如何自作一个属于自己的自定义中间件。

1.创建一个util.js文件,用于封装编写自定义的表单数据处理中间件

// 导入querystring模块(目的是用于将下方拼接好的查询字符串转换成对象)
const qs = require('querystring')

//创建中间件处理函数
function bodyParser(req, res, next) {
  let str = ''
  // 这个chunk就是每次获取到的请求体的部分数据
  req.on('data', (chunk) => {
    str += chunk
  })

  req.on('end', () => {
    const body = qs.parse(str)
    //这里将处理好的请求体数据挂载到req上
    // 就是为了让后边的路由可以通过req.body获取到
    req.body = body
    next() //将流转关系传递给后边的中间件或路由
  })
}

//导出中间件函数
module.exports = bodyParser

2.创建一个app.js文件,用于创建服务,注册中间件

// 导入express模块
const express = require('express')

// 创建服务器对象
const app = express()

// 1.导入自定义的中间件模块
const bodyparser = require('./util.js')

// 2.注册自定义的中间件  将其注册为全局可用的中间件

app.use(bodyparser)

app.post('/test', (req, res) => {
  //由于全局注册过自定义的处理请求体表单数据的中间件,所以这里可以直接获取到请求体数据
  // 如果过没有注册过处理表单数据的中间件,这里req.body的返回值将会是undefined
  res.send(req.body)
})

//启动服务器
app.listen(80, () => {
  console.log('express server running at http://127.0.0.1');
})

3.效果测试

在集成终端中使用运行app.js文件,启动服务

打开postman,1.选择post请求方式,在地址栏输入http://127.0.0.1/test。2.选择Body选项。

3.选择x-www-form-urlendcoded 4.填写请求体表单数据 5.发送请求

由下图可见,在请求发送后,服务器端返回的就是请求体对象,说明自定义中间件生效

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nodejs制作自定义中间件 的相关文章

  • nodejs中间件

    内置中间件 express中内置的中间件 中间件本质是一个函数 json json是处理json请求的 获取参数 req body app use express json 测试json是否成功的步骤 1 在postman发起请求 2 po
  • Elasticsearch之聚合aggregations

    聚合可以让我们极其方便的实现对数据的统计 分析 例如 什么品牌的手机最受欢迎 这些手机的平均价格 最高价格 最低价格 这些手机每月的销售情况如何 实现这些统计功能的比数据库的sql要方便的多 而且查询速度非常快 可以实现实时搜索效果 1 基
  • ZooKeeper(一):基础介绍

    文章目录 什么是 ZooKeeper ZooKeeper 发展历史 ZooKeeper 应用场景 ZooKeeper 服务的使用 ZooKeeper 数据模型 data tree 接口 znode 分类 总结 什么是 ZooKeeper Z
  • 【中间件】Redis如何解决BigKey

    BigKey 的弊端 BigKey 需要解决 根源就在于 BigKey 会带来的问题 占用内存 因为 Redis 数据结构的底层数据结构 大 Key 会占用更多的内存空间 造成更大的内存消耗 单线程模型 因为 Redis 的通信依赖于 So
  • Activiti7与Spring、Spring Boot整合开发

    Activiti整合Spring 一 Activiti与Spring整合开发 1 1 Activiti与Spring整合的配置 1 在pom xml文件引入坐标 如下
  • Node利用connect中间件 及bodyParser处理文件上传

    1 html
  • mybatis-plus入坑指南

    简介 MyBatis Plus 简称 MP 是一个 MyBatis 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 特性 无侵入 只做增强不做改变 引入它不会对现有工程产生影响 如丝般顺滑 损耗小 启动即
  • 消息中间件(一)

    文章目录 消息中间件 什么是中间件 为什么使用MQ 应用场景 JMS和AMQP JMS AMQP JMS和AMQP的区别 消息队列产品 消息中间件 什么是中间件 MQ全称为Message Queue 消息队列是应用程序和应用程序之间的通信方
  • Netty和Tomcat的区别、性能对比

    文章目录 一 Netty和Tomcat有什么区别 二 为什么Netty受欢迎 三 Netty为什么并发高 一 Netty和Tomcat有什么区别 Netty和Tomcat最大的区别就在于通信协议 Tomcat是基于Http协议的 他的实质是
  • .net 中间件的使用 Use,Run,Map,MapWhen,UseWhen

    net 中间件的使用 Use Run Map MapWhen UseWhen net 提供了几种添加自定义中间件的方法Use Run Map MapWhen UseWhen Use app Use async context next gt
  • nodejs 中 token 的使用

    前言 token 验证 在设计登录注册和一些权限接口时发挥作用 以nodejs为例 谈一谈jsonwebtoken的使用 正文 一 安装 npm i jsonwebtoken 二 使用 首先 需要提供一个密匙 也就是一个字符串 用于toke
  • RateLimiter 的底层实现是啥?

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rock
  • Web服务器漏洞小结(中间件)

    IIS IIS是Windows Server中自带的一个Web服务器 IIS出现的漏洞 一 IIS目录解析漏洞 test asp 1 jpg IIS5 x 6 0 以 asp asa cer cdx 命名的文件夹 其目录内的任何扩展名的文件
  • C语言static和extern关键字

    1 static static修饰的变量 自始至终只有一块空间 当前文件才能使用 生命周期是从定义开始直到程序结束 全局变量的定义是在 c文件中 但是声明全局变量是在 h中 static 静态型 用它定义的变量自动初始化为0值或空值 常用于
  • 【读写锁 ReadWriteLock 结合 LinkedHashMap】

    import java util LinkedHashMap import java util Map import java util concurrent locks ReadWriteLock import java util con
  • 服务攻防-中间件安全&CVE复现&IIS&Apache&Tomcat&Nginx漏洞复现

    目录 一 导图 二 ISS漏洞 中间件介绍 gt 1 短文件 2 文件解析 3 HTTP SYS 4 cve 2017 7269 三 Nignx漏洞 中间件介绍 gt 1 后缀解析漏洞 2 cve 2013 4547 3 cve 2021
  • JAVA WEB 中间件为SERVLET(四)

    写一个用户登录部署到tomcat 本地 先找到一个模板 HTML代码复制到本地的项目index jsp中 这个登录模板包含一个JSP 一个JS 三个CSS等文件 这个是index jsp代码
  • 两点。。。等来金蝶中间件的面试通知

    晚上笔试 说是大约一点通知 等到十二点 困了 上床 睡不着啊 1点半翻起来 打开手机 没有 打开Gmail 没有 于是抽了支烟 等到两点多一点 手机响了 接到面试通知 下午一点 石头终于落地 因为上午还有一场网易游戏的笔试 担心冲突 还好
  • springboot中用undertow踩坑记

    场景 准备基于springboot的静态资源实现mp4资源的播放 不同版本的springboot下效果不一样 可能导致正常的资源不可用 本文测试了几个版本 也针对这种情况提出了解决建议 希望对你的工作有所帮助 众所周知 springboot
  • AUTOSAR从入门到精通-中间件通信DDS(三)

    目录 前言 原理 常见中间件模型 第一代 点对点CS Client Server 模型

随机推荐

  • 高等数学知识总结

    因为某些算法题和数学有着密不可分的联系 因此 我决定将我大一这一年来学的高等数学做一个全面的总结 有些知识已经记得不算太清 如果有错误的地方还请大佬及时指出 第一章 函数 极限与连续 第1节 初等函数 这一节就是高中的一些基本初等函数的的复
  • malloc与realloc的区别

    ANSI C说明了三个用于存储空间动态分配的函数 1 malloc 分配指定字节数的存储区 此存储区中的初始值不确定 2 calloc 为指定长度的对象 分配能容纳其指定个数的存储空间 该空间中的每一位 bit 都初始化为0 3 reall
  • 【问题解决】Linux下载安装sentencepiece库异常

    我本意是想安装allennlp库 但是卡在sentencepiece长时间不动 所以又去找了下载安装sentencepiece的方法 结果安装sentencepiece库也有问题 首先 给出一个下载sentencepiece库的链接 sen
  • 小鸡c++/python配置v5的环境问题

    改配置文件 解决SDK问题 SDK问题解决 解决VS2017 error LNK1104 无法打开文件 msvcprtd lib msvcprtd lib 错误 LNK1104 无法打开文件 kernel32 lib YoloV5Detec
  • spring boot(4)-html和templates

    静态页面 spring boot项目只有src目录 没有webapp目录 会将静态访问 html 图片等 映射到其自动配置的静态目录 如下 static public resources META INF resources 比如 在res
  • python中sql相关(查询、更新),以及sql参数化

    python连接数据库 查询 更新 import pymysql def beta mysql connect pymysql Connect host 1 1 1 1 port 3906 user user passwd pwd db d
  • <QT开发> QT开发工具-之-QT应用程序打包

    QT开发 QT开发工具 之 QT应用程序打包 一 前言 笔者为什么会写这篇文章呢 这是因为 笔者使用windows QT开发了一个测试工具 目的是通过TCP IP测试其它应用程序 首先这个QT程序是笔者自己开发的 所以笔者的电脑当然是可以运
  • Elasticsearch Unable to parse response body HTTP/1.1 413 Request Entity Too Large问题解决

    ERROR o s a i SimpleAsyncUncaughtExceptionHandler Unexpected exception occurred invoking async method public void org zs
  • 使用docker运行mysql:5.7

    本文档使用docker容器运行mysql 5 7版本 2 1 docker拉取mysql 5 7镜像 docker pull mysql 5 7 2 2 查看镜像是否拉取成功 docker image ls 2 3 启动mysql 5 7
  • [网络安全自学篇] 十五.Python攻防之多线程、C段扫描和数据库编程(二)

    这是作者的系列网络安全自学教程 主要是关于网安工具和实践操作的在线笔记 特分享出来与博友共勉 希望您们喜欢 一起进步 前文分享了Python网络攻防相关基础知识 包括正则表达式 Web编程和套接字通信 本文将继续分析Python攻防之多线程
  • 第十四届蓝桥杯省赛C++B组个人代码(未检验)

    2023 年 4 月 8 日是蓝桥杯省赛 今年我参加的是 C 组 B 组 虽然说打得不是很理想 不过好在个人感觉省一问题不是很大 反正只要是省一对得多对得少都一样 比赛中的代码是没法保存的 所以我借着新鲜的记忆 重新把我会写的题的代码都码了
  • pycharm,idea,clion的配置

    html 运行的快捷键 alt f2 的位置 这里修改快捷键为 ctrl alt 0 转载于 https www cnblogs com zach0812 p 11517247 html
  • Cookie实现自动登录案例实现

    大家好 我是一名入门的菜鸟 如果你不经意间翻开了我的文章 谢谢您 您的支持是我前进的动力 让我们一起加油 由于不是名牌大学 只是一个普普通通的专科生 所以 我想通过自己的努力来获得我想要的 我不会放弃我的梦想 我也曾幻想着我成功的时候在朋友
  • 利用Graphviz画神经网络框架图

    文章目录 前言 dot画神经网络图 简单神经网络 大型神经网络 伪 Python 画神经网络图 大型神经网络 前言 做了神经网络这么久 偶尔想画一下自己模型的架构图 但是又无从下手 因为网络一般都比较复杂 如果自己手动利用Visio画的画又
  • Windows自带的超强命令行磁盘管理工具

    不知道大家在装Windows系统的时候 使用原版安装的多不多 GHOST版系统是个好东西 能够让不懂计算机的操作者能够一键装好系统 并且GHOST版的制作大神们还针对系统做了非常多的优化操作 虽然 优化 这个词最近才有了一些恐怖的意思 不过
  • Linux服务器挂载ntfs移动硬盘

    Linux服务器挂载ntfs移动硬盘 转载来源 本文链接 https blog csdn net wojiuwangla article details 81029603 服务器上的一些移动硬盘需要备份到数据 公司买了个500G的机房 带上
  • 【Windows + Linux】专业级:安装操作系统 + 多系统 + GhostCast Server PXE 网刻基础坑精通详解

    目录 前言 1 BIOS 和 UEFI 与 MBR 和 GPT 的装机简述 GPT MBR 硬盘分区表模式 BOOT 引导流程 启动管理器 如何选择一种 BOOT Mode 启动模式 Legacy UEFI 总结 BIOS 设置的硬盘模式
  • Android 报错问题总结(持续更新中)

    1 解决Failed to load the JNI shared library jvm dll 很有可能是Eclipse版本和jdk版本不一致 一般在Windows 7 64位系统下 32位的jdk存放在Program Files x8
  • 记录一次swagger空指针异常

    昨日编码过程中 突然间发现swagger文档页面打不开了 后台报空指针 注销了所有新写的代码后 发现了问题 是疏忽大意导致的 原因是 方法类中的Vo字段名和ApiImplicitParam中name值不同 真是粗心大意害死人啊 还好没提交
  • Nodejs制作自定义中间件

    对于Nodejs的中间件我想各位小伙伴都有所了解 下边我就以制作一个自定义的处理表单数据的中间件为例 告诉大家如何自作一个属于自己的自定义中间件 1 创建一个util js文件 用于封装编写自定义的表单数据处理中间件 导入querystri