私はnode.js + Expressアプリケーションを持っています。それは私が第三者のサービスに提供したwebhookを持っています。Node.jsがwebhookのPOST JSONデータを読み取ることができません
{「split_info」:「ヌル」、「CUSTOMERNAME」:「マーチャント名」、 「additionalCharges」:「ヌル」サービスは、次のようになりますJSONボディと私のウェブフックへのPOSTリクエストを送信します、 "paymentMode": "CC"、 "ハッシュ": "a31ff1b91fd9b8ae9c82f38b02348d21fsdfd86cc828ac9a0acf82050996372cc656de3db0fe3bf9af52b73a182a77787241f3e19ec893391607301b03e70db8"、 "状態": "お支払いをリリース"、 "paymentId": "551731"、 "productInfo": "productInfo"、 "customerEmail":」 [email protected] " "customerPhone": "9876543212"、 "merchantTransactionId": "JNN"、 "量" "100.0"、 "udf2": "NULL"、 "通知ID": "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'が'は、アプリケーション/ vnd.api + json'であるあなたは確かにいますか?これは私にとってはむしろ奇妙なようです。 – svens
あなたが正しいのですが、私がhookbin.comを使ってthrid party webhookをテストしたとき、コンテンツの種類は*/*と書かれています。私のapp.jsのコンテンツタイプをapp.use(bodyParser.json({type: '*/*'})))に変更します。 – codeinprogress
私はタイプを '*/*'に変更しましたが、req.bodyはまだ空です。 – codeinprogress