2017-09-28 41 views
0

我試圖使用POST將數據從一個休息服務發送到另一個休息服務。如何在請求中添加body並獲得nodejs express中的第二個休息服務

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

你的問題很可能不是發送請求體,但閱讀它。

爲了處理正文,您需要使用中間件。一般來說,你將使用bodyParser.jsonDocs,檢查底部的例子)

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

app.use(bodyParser.json()); 

這將允許它解析JSON。

另一步是發送端(first.js)。您需要添加標頭Content-Type: application/json

這兩件事將允許second.js正確地讀取正文並使其可用。

+0

app.use(bodyParser.json())是什麼在second.js中的應用程序?我已經有了app.js'app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended:false}));'或者我們是否需要在second.js中添加它? –

+0

這取決於事情的設置,所以答案可能是。你一定需要頭Content-Type:application/json'位,所以先試一下。如果它仍然不起作用,請嘗試將其添加到'second.js'中。 – samanime

相關問題