我有一個node.js + Express應用程序。它有一個我已經提供給第三方服務的webhook。該服務發送POST請求我的網絡掛接與JSON的身體看起來是這樣的:Node.js無法讀取我的webhook中的POST JSON數據
{「split_info」:「空」,「客戶名稱」:「商戶名稱」, 「additionalCharges」:「空」 「paymentMode」: 「CC」, 「哈希」: 「a31ff1b91fd9b8ae9c82f38b02348d21fsdfd86cc828ac9a0acf82050996372cc656de3db0fe3bf9af52b73a182a77787241f3e19ec893391607301b03e70db8」, 「狀態」: 「釋放付款」, 「paymentId」: 「551731」, 「productInfo」: 「productInfo」, 「customerEmail」:」 test123「, 」customerPhone「:」9876543212「,」merchantTransactionId「:」jnn「, 」amount「:」100.0「,」udf2「:」null「,」notificationId「:」4「 udf1「:」null「, 」udf5 「:」 空」, 「udf4」: 「空」, 「udf3」: 「空」, 「ERROR_MESSAGE」: 「沒有 錯誤」}
我使用身體的解析器模塊讀取POST數據。然而,當我做req.body它給[object Object],如果我做JSON.stringify(req.body),它給出{},即空。如果我嘗試訪問req.body.paymentMode這樣的響應中的鍵,那麼它會給出未定義的。
這裏是我的網絡掛接路由器代碼:mywebhook.js
var express = require('express');
var router = express.Router();
router.post('/success', function(req, res){
//this is where I need to strip the JSON request
//req.body or JSON.stringify(req.body) or anything that works
//if everything is okay then I send
res.sendStatus(200);
});
module.exports = router;
我app.js看起來是這樣的:
var express = require('express');
var exphbs = require('express-handlebars');
var router = express.Router();
var bodyParser = require('body-parser');
var mywebhook = require('./routes/mywebhook');
var app = express();
.
.
.
app.use(bodyParser.urlencoded({'extended':'true'})); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use('/callwebhook', mywebhook);
.
.
.
so on
很肯定我失去了一些東西,或做有什麼不對,但我無法弄清楚。
謝謝。
你確定請求的Content-type是'application/vnd.api + json'嗎?這對我來說似乎很奇怪。 – svens
你是對的,當我使用hookbin.com測試第三方webhook時,它說內容類型是:*/*。所以我更改我的app.js中的內容類型爲app.use(bodyParser.json({type:'*/*'})); – codeinprogress
好吧,我將類型更改爲'*/*',但req.body仍爲空。 – codeinprogress