2017-09-28 4 views
0

POSTを使用して、あるレストサービスから別のレストサービスにデータを送信しようとしています。リクエストに本文を追加してnodejsで2番目のレストサービスを受ける方法

first.js

const express = require("express"); 
const http = require("http"); 

var router = express.Router(); 

var options = { 
    host: "localhost", 
    port: "3000", 
    path: "/second", 
    method: "POST", 
    body: JSON.stringify({ foo: "foo" }) 
}; 

router.get("/", function(req, res, next) { 
    http.request(options); 
}); 

module.exports = router; 

second.js

var express = require("express"); 
var router = express.Router(); 

router.post("/", function(req, res, next) { 
    console.log(req.body); 
    res.send("Hello"); 
}); 

module.exports = router; 

これは} {空のオブジェクトを返します。誰かがJSON本体をあるサービスから別のサービスに送る方法を知っていますか?

app.js

app.use("/first", first); 
app.use("/second", second); 

答えて

1

あなたの問題は、リクエストボディを送信しますが、が、それはを読んそうではありません。

ボディを処理するには、ミドルウェアを使用する必要があります。一般的に、あなたは

// In second.js, in addition to your other stuff 
import bodyParser from 'body-parser'; 

app.use(bodyParser.json()); 

これは、それはJSONをパースすることができます(例については下をチェックし、DocsbodyParser.jsonを使用します。

他のステップは送信側(first.js)です。ヘッダーContent-Type: application/jsonを追加する必要があります。

これらの2つのことで、身体を正しく読み取って利用できるようになります。

+0

ここでsecond.jsのアプリは何ですか?app.use(bodyParser.json()); '?私はすでにapp.useの 'app.use(bodyParser.json())にこれを持っています。 app.use(bodyParser.urlencoded({extended:false}));またはこれもsecond.jsに追加する必要がありますか? –

+0

それは物事がどのように設定されているかによって異なりますので、答えは多分です。ヘッダー 'Content-Type:application/json'ビットが必要なので、まずそれを試してみてください。それでも動作しない場合は、 'second.js'に追加してみてください。 – samanime

関連する問題