curl發送文件bodyParser無法獲取請求體的問題分析

問題及現象

開發過程使用curl+PUT方式發送少量數據, 后端使用NodeJS+express框架+bodyParser,但測試發現無法獲取到請求體內容,現象表現為req.body 為空對象 {}
代碼如下:

const bodyParser = require('body-parser');
router.use('/api/1', bodyParser.raw({limit: '10mb', type: '*/*'})); //中間件處理
router.put('/api/1', (req,res,next)=>{console.log(req.body); //輸出為{}res.send('OK');})

使用curl -T 1.log http://127.0.0.1:8080/api/1 測試

curl -T 1.log http://127.0.0.1:8080/api/1 

手動接收并打印請求體, 是能正常得到的,

router.put('/api/2', (req,res,next)=>{console.log(req.headers); //輸出請求頭信息console.log(req.pipe(process.stdout)); //正常輸出res.send('OK');})

問題原因

經定位發現, curl默認使用put上傳文件時, 默認不發送Content-Type, 而bodyParser判定type的依據是Content-Type匹配, 故此種情況下實際上中間件并沒有執行, req.body為空;

解決方法

方案1 curl發送時增加Content-Type

curl -T 1.log -H 'Content-Type:text/plain' http://127.0.0.1:8080/api/1 

后端代碼無需修改;

方案2 后端服務兼容這種不帶Content-Type的請求

router.use('/api/1', bodyParser.raw({limit: '10mb', type: ()=>true})); //中間件處理, 自定義type的判定函數,直接返回true

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92052.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92052.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92052.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue3 學習教程,從入門到精通,Vue 3 內置屬性語法知識點及案例代碼(25)

Vue 3 內置屬性語法知識點及案例代碼 Vue 3 提供了豐富的內置屬性,幫助開發者高效地構建用戶界面。以下將詳細介紹 Vue 3 的主要內置屬性,并結合詳細的案例代碼進行說明。每個案例代碼都包含詳細的注釋,幫助初學者更好地理解其用法。1. data …

機器學習基石:深入解析線性回歸

線性回歸是機器學習中最基礎、最核心的算法之一,它為我們理解更復雜的模型奠定了基礎。本文將帶你全面解析線性回歸的方方面面。1. 什么是回歸? 回歸分析用于預測連續型數值。它研究自變量(特征)與因變量(目標&#xf…

OneCodeServer 架構深度解析:從組件設計到運行時機制

一、架構概覽與設計哲學1.1 系統定位與核心價值OneCodeServer 作為 OneCode 平臺的核心服務端組件,是連接前端設計器與后端業務邏輯的橋梁,提供了從元數據定義到應用程序執行的完整解決方案。它不僅是一個代碼生成引擎,更是一個全生命周期管理…

Jwts用于創建和驗證 ??JSON Web Token(JWT)?? 的開源庫詳解

Jwts用于創建和驗證 ??JSON Web Token(JWT)?? 的開源庫詳解在 Java 開發中,提到 Jwts 通常指的是 ??JJWT(Java JWT)庫??中的核心工具類 io.jsonwebtoken.Jwts。JJWT 是一個專門用于創建和驗證 ??JSON Web To…

如果發送的數據和接受的數據不一致時,怎么辦?

那ART4222這個板卡舉例,我之間輸入一個原始數據“6C532A14”,但是在選擇偶校驗時,接收的是“6C532B14”,我發送的碼率(運行速度)是100000,但接受的不穩定,比如;“100100.…

ISCC認證:可持續生產的新標桿。ISCC如何更快認證

在全球可持續發展浪潮中,ISCC(國際可持續與碳認證)體系已成為企業綠色轉型的重要工具。這一國際公認的認證系統覆蓋農業、林業、廢棄物處理等多個領域,通過嚴格的可持續性標準、供應鏈可追溯性要求和碳排放計算規范,建…

想對學習自動化測試的一些建議

Python接口自動化測試零基礎入門到精通(2025最新版)接觸了不少同行,由于他們之前一直做手工測試,現在很迫切希望做自動化測試,其中不乏工作5年以上的人。 本人從事軟件自動化測試已經近5年,從server端到web…

電子電氣架構 ---智能電動汽車嵌入式軟件開發過程中的block點

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

createAsyncThunk

下面,我們來系統的梳理關于 Redux Toolkit 異步操作:createAsyncThunk 的基本知識點:一、createAsyncThunk 概述 1.1 為什么需要 createAsyncThunk 在 Redux 中處理異步操作(如 API 調用)時,傳統方法需要手…

STM32F103C8T6 BC20模塊NBIOT GPS北斗模塊采集溫濕度和經緯度發送到EMQX

云平臺配置 訪問下載頁面:免費試用 EMQX Cloud 或 EMQX Enterprise | 下載 EMQX,根據需求選擇對應版本下載。將下載的壓縮包上傳至服務器(推薦存放于C盤根目錄,便于后續操作),并解壓至指定路徑&#xff08…

YOLO11漲點優化:自研檢測頭, 新創新點(SC_C_11Detect)檢測頭結構創新,實現有效漲點

目標檢測領域迎來重大突破!本文揭秘原創SC_C_11Detect檢測頭,通過空間-通道協同優化與11層深度結構,在YOLO系列上實現mAP最高提升5.7%,小目標檢測精度暴漲9.3%!創新性結構設計+即插即用特性,為工業檢測、自動駕駛等場景帶來革命性提升! 一、傳統檢測頭的三大痛點 在目…

OSCP 考試期間最新考試政策

根據 Offensive Security 官方最新考試政策(2025 年 7 月),OSCP 考試期間禁止或嚴格限制以下工具與行為: 一、絕對禁止使用的工具/服務 類別舉例說明商業/付費版本Metasploit Pro、Burp Suite Pro、Cobalt Strike、Canvas、Core …

如何基于MQ實現分布式事務

文章目錄1.可靠消息最終一致性1.1 本地消息表1.1.1 本地消息表的優缺點1.消息堆積,掃表慢2.集中式掃表,會影響正常業務3.定時掃表的延遲問題1.1.2 本地消息表的代碼實踐1.表結構設計2.具體業務實現1.2 事務消息1.2.1 事務消息的三個階段階段1&#xff1a…

ARM學習(45)AXI協議總線學習

筆者來介紹一下ARM AMBA 總線中的AXI協議 1、簡介 ARM 公司推出的AMBA 總線(Advanced Microcontroller Bus Architecture) ,目前已經推出到AMBA5版本。主要包括 APB:Advanced Peripheral Bus,針對外設 AHB:Advanced High-Performance Bus,高性能總線,支持64/128 位多管…

Visual C++與HGE游戲引擎:創建偽2.5D斜45度視角游戲

本文還有配套的精品資源,點擊獲取 簡介:本教程專注講解如何結合Visual C和HGE游戲引擎構建一個斜45度視角的偽2.5D游戲世界。HGE提供了DirectX的接口,簡化了圖形和音頻處理,使得開發者可以專注于游戲邏輯和視覺效果的實現。教程…

打造個人數字圖書館:LeaNote+cpolar如何成為你的私有化知識中樞?

文章目錄前言1. 安裝Docker2. Docker本地部署Leanote螞蟻筆記3. 安裝cpolar內網穿透4. 固定Leanote螞蟻筆記公網地址前言 在信息爆炸的時代,如何系統管理知識資產并實現價值輸出?螞蟻筆記(Leanote)提供了一種全新解決方案。這款開…

[特殊字符]? 整個鍵盤控制無人機系統框架

🎯 五大核心模塊詳解1. 📥 輸入處理模塊keyboard_control_node ├── 功能:捕獲鍵盤輸入并轉換為ROS消息 ├── 文件:keyboard_control.cpp ├── 輸入:鍵盤按鍵 (W/A/S/D/R/F/Q/E/L/ESC) ├── 輸出:g…

機器學習第三課之邏輯回歸(三)LogisticRegression

目錄 簡介 1.下采樣 2.過采樣 簡介 接上兩篇篇博客最后,我們使用了K折交叉驗證去尋找最合適的C值,提升模型召回率,對于選取C的最優值,我們就要把不同C值放到模型里面訓練,然后用驗證集去驗證得到結果進行比較&#x…

1.Java語言有什么特點

1.Java語言有什么特點 1.面向對象編程,擁有封裝,繼承和多態的特性,所有可以很好的設計出低耦合的項目工程。 2.很好的可移植性,在Java中有java虛擬機(JVM)的支持,每寫一個類都是.Class文件。J…

部署 Kibana 8.2.2 可視化管理 Elasticsearch 8.2.2 集群

? 適用版本:Elasticsearch 8.2.2 Kibana 8.2.2 一、環境準備 組件版本示例地址Elasticsearch8.2.2192.168.130.61:9200, 192.168.130.62:9200, 192.168.130.65:9200Kibana8.2.2部署在 192.168.130.651操作系統CentOS 7?? 嚴格版本匹配:Kibana 8.2.2…