2017-09-28 3 views
0

POST을 사용하여 하나의 휴식 서비스에서 다른 휴식 서비스로 데이터를 보내려고합니다.요청에 본문을 추가하고 nodejs에서 두 번째 휴식 서비스를받는 방법

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.use("/first", first); 
app.use("/second", second); 

답변

1

귀하의 문제는 요청 본문를 내보내지만, 를 읽어하지 가능성이 app.js.

본문을 처리하려면 미들웨어를 사용해야합니다. 일반적으로 당신은

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

app.use(bodyParser.json()); 

이는 JSON을 구문 분석 할 수 있습니다 (예는 바닥을 확인 Docs) bodyParser.json를 사용합니다.

다른 단계는 송신 측 (first.js)입니다. 헤더 Content-Type: application/json을 추가해야합니다.

두 가지 사항을 통해 second.js은 신체를 올바르게 읽고 사용할 수 있습니다.

+0

여기서 second.js의 앱은 무엇입니까? app.use (bodyParser.json()); app.use (bodyParser.json())에서 이미 이것을 가지고 있습니다. 012. 우리는 이것을 second.js에 추가해야합니까? –

+0

상황이 어떻게 설정되는지에 따라 달라 지므로 그 대답은 아마도 것입니다. 'Content-Type : application/json' 헤더가 꼭 필요하기 때문에 먼저 시도해보십시오. 여전히 작동하지 않는다면'second.js'에 추가 해보십시오. – samanime

관련 문제