nodejs request module裡的json引數的一個坑

i042416發表於2019-05-26

今天工作的時候遇到一個坑,在客戶端用nodejs給伺服器傳送HTTP請求,伺服器老是報錯:In the context of Data Services an unknown internal server error occurred

nodejs request module裡的json引數的一個坑

經過伺服器端除錯發現,伺服器根本就沒有正確解析出這個請求的content-type。在postman裡能工作的場景下,正確解析出的content-type是multipart/mixed:

nodejs request module裡的json引數的一個坑

而我的nodejs程式碼裡明明指定了這個content-type的啊?

nodejs request module裡的json引數的一個坑

經過一行行程式碼分析,最後發現問題出在第63行的json欄位的值。我錯誤的賦成了true。

nodejs request module裡的json引數的一個坑

這個引數起什麼作用?除錯一下就知道了。如果為true,進入第403行。

nodejs request module裡的json引數的一個坑
nodejs request module裡的json引數的一個坑
nodejs request module裡的json引數的一個坑

如果請求內部有entity的content-type不是application/x-www-form-urlencoded, 則進入第1293行。

nodejs request module裡的json引數的一個坑

safeStringify的實現邏輯就是瀏覽器原生的JSON.stringify, 把應用程式傳入的json物件序列化成字串。但是我的程式碼裡,傳入request module的請求體是一個字串,而json引數設的又是true,所以邏輯上就不對了。把這個json引數的值改為false後,一切正常。

nodejs request module裡的json引數的一個坑
nodejs request module裡的json引數的一個坑
nodejs request module裡的json引數的一個坑

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":


nodejs request module裡的json引數的一個坑


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2645581/,如需轉載,請註明出處,否則將追究法律責任。

相關文章