首页 > 编程语言 >nodejs遇到的一个小问题分享给大家

nodejs遇到的一个小问题分享给大家

时间:2024-08-05 14:18:35浏览次数:13  
标签:use 遇到 nodejs 中间件 bodyParser routes router 分享 路由

今天在调试项目的时候突然发现

   const { name } = ctx.request.body  无法接收到参数了,后来检查了一下代码发现路由中间件和bodyparser中间件的加载顺序错了,导致无法接收参数,正确应该是这样:
app.use(bodyParser());
app.use(router.routes()).use(router.allowedMethods());

 

大概讲一下原理:
在 Koa 中,中间件的执行顺序非常重要,因为 Koa 是基于中间件的架构,所有的中间件都是按顺序执行的。以下是为什么 app.use(bodyParser()); 和 app.use(router.routes()).use(router.allowedMethods()); 的顺序会影响到 ctx.request.body 的原因。  

中间件执行顺序

  1. bodyParser 中间件:  
  • bodyParser 中间件的作用是解析请求体(如 JSON、表单数据等),并将解析后的数据存储在 ctx.request.body 中。
 
  • 如果 bodyParser 中间件在路由中间件之前执行,它会在请求到达路由处理函数之前解析请求体。
  2. router.routes() 和 router.allowedMethods() 中间件:  
  • router.routes() 中间件负责处理路由匹配,将请求分发到相应的路由处理函数。
 
  • router.allowedMethods() 中间件用于设置响应的 HTTP 方法,通常在路由处理之后调用。
 

错误顺序的影响

  如果你将 router.routes() 放在 bodyParser() 之前,路由处理函数会在请求体被解析之前执行。这意味着在路由处理函数中,ctx.request.body 还没有被填充,因此你无法访问到请求体中的参数。

标签:use,遇到,nodejs,中间件,bodyParser,routes,router,分享,路由
From: https://www.cnblogs.com/llcdbk/p/18343118

相关文章

  • 【GIS开发】双非一本毕业生如何拿到武汉国企offer?面试分享
    个人经历:大家好,我是新中地特训营2307期班级的学员。在24年的春季校招上,我作为一名双非一本的应届生有幸拿到了武汉一家国企WebGIS三维开发岗的offer,9K+定额六险一金+项目奖金+13薪,薪资待遇算得上是同行里的中等偏上。圆满结束了我的求职之旅,下面我将分享一些在新中地学习的GIS......
  • 速卖通、美客多自养号经验分享:满足测评条件与Listing优化秘诀
    Listing,即产品在电商平台上的展示页面,是吸引顾客、促进销售的关键窗口。为了在众多竞品中脱颖而出,卖家需精心优化Listing的每一个细节,从类别选择到描述撰写,每一步都至关重要。以下是Listing优化的五大核心策略:1. 类别精准定位分类精准:正确选择产品所属的分类,甚至可考虑添加......
  • 音频转换工具有哪些好用?五款可以转换音频格式的软件分享
    在数字时代,音频文件的转换已成为我们日常生活中的一项基本技能。无论是为了适应不同的播放设备,还是为了优化存储空间,音频格式转换都显得尤为重要。但市场上的转换工具往往伴随着高昂的费用,让许多人望而却步。那有什么不仅易于使用,而且功能全面,能够满足我们对音频转换的各种需......
  • 微信小程序开发中的朋友圈分享和社交媒体接入
    微信小程序开发中的朋友圈分享和社交媒体接入基本概念社交媒体分享作用说明示例一:基础的朋友圈分享开启分享菜单配置分享内容示例二:自定义分享内容自定义分享内容示例三:动态调整分享内容动态调整分享内容页面结构示例四:分享到其他平台分享到QQ空间页面结构示例五:使......
  • 【分享贴】2024年主流项目管理软件推荐
    最近一直有小伙伴问我有没有什么好的项目管理软件推荐,刚好最近也整理了一些内容,本期就给大家分享2024年一些主流的项目管理软件。主要会包含每款软件的简要介绍、功能、优势、不足、以及适用对象这几个维度,部分软件是个人亲身体验过的,另一部分就是整理的广大网友的使用心得,如有不......
  • echarts设置tooltip遇到值为0不展示的问题(已解决)
    echarts设置tooltip遇到值为0不展示的问题(已解决)遇到值为0时tooltip:{trigger:"axis",extraCssText:"z-index:3",axisPointer:{type:"shadow",//默认为直线,可选为:'line'|'shadow'......
  • Python 初学者,遇到简单数学问题
    我必须做一个数学练习,要求我以10^-5的幅度构建√3。使用扫描方法和Python。我是法国人,所以我不知道是否“扫描”是正确的词。在练习的前面,我得到了一些提示:√3是方程x^2-3=0的解,我需要达到x*的点y是负数所以我尝试了这个:x=1y=1+10......
  • 最好用的深拷贝方法?分享 1 段优质 JS 代码片段!
    本内容首发于工粽号:程序员大澈,每日分享一段优质代码片段,欢迎关注和投稿!大家好,我是大澈!本文约 900+ 字,整篇阅读约需 1 分钟。今天分享一段优质JS代码片段,轻松实现了对象间的深度克隆。老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!const......
  • MySQL基础知识分享(二)
    写在前面大家好,不知道前面的20题大家写的怎么样,前面分享的20题是SQL中查询的基础题型,这部分被称为DQL部分,是每个学习MySQL必须要学会的部分,下面就让我来介绍MySQL中的TCL部分,也就是事务部分。ACID四大特性事务的概述事务的ACID特性可以确保银行不会弄丢你的钱。而在应用逻辑中......
  • 分享圣诞树+雪人+全屏动效
    分享圣诞树+雪人+全屏动效创建时间:2024年8月4号分享之前学习老师发的几个小玩意一、圣诞树运行:点击该exe即可出来一棵圣诞树。退出:鼠标点击该圣诞树右键二、雪人运行:双击点开exe即可退出:和圣诞树一样、三、音乐:满满都是爱运行:双击打开,该程序对鼠标的轨迹也有影响......