Javascript 是否将post请求从express js服务器发送到另一个express js服务器?
我有一个运行在3000和4000端口上的express js服务器 并希望将post请求从服务器3000发送到服务器4000 我试过这个:Javascript 是否将post请求从express js服务器发送到另一个express js服务器?,javascript,node.js,express,Javascript,Node.js,Express,我有一个运行在3000和4000端口上的express js服务器 并希望将post请求从服务器3000发送到服务器4000 我试过这个: var post_options = { url: "http://172.28.49.9:4000/quizResponse", timeout: 20000, method:"POST", encoding: "application/json; charset=utf-8", body : {data: formdata} };
var post_options = {
url: "http://172.28.49.9:4000/quizResponse",
timeout: 20000,
method:"POST",
encoding: "application/json; charset=utf-8",
body : {data: formdata}
};
request(post_options,
function optionalCallback(err, httpResponse, body) {
if (err) {
console.log(err);
}else
console.log(body);
});
但是得到这个错误:
TypeError:ClientRequest.OutgoingMessage.write(_http_outgoing.js:456:11)at Request.write(D:\restfullApi\inspectoreapi\node\u modules\Request\Request.js)的第一个参数必须是字符串或缓冲区:1514:27)结尾(D:\restfullApi\examineerapi\node\u modules\request\request.js:(552:18)马上。(D:\restfullApi\testeerapi\node\u modules\request\request.js:581:7)在运行回调(timers.js:637:20)在tryonitimmediate(timers.js:610:5)在processImmediate[as_immediateCallback](timers.js:582:5)
这不是我想的那样有效。请帮助我解决这个问题。有一个名为http的本机节点模块,您可以在您的案例中使用它。它看起来是这样的:
const http = require('http');
var postData = JSON.stringify({user: 'sample1'});
const options = {
hostname: '172.28.49.9',
port: 4000,
path: '/quizResponse',
method: 'POST',
headers: {
'content-type': 'application/json',
'accept': 'application/json'
}
};
const req = http.request(options, (res) => {
res.setEncoding('utf8');
res.on('data', (chunk) => {
console.log(`BODY: ${chunk}`);
});
res.on('end', () => {
console.log('No more data in response.');
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
// write data to request body
req.write(postData);
req.end();
我建议您阅读文档:请在执行上述代码时添加您得到的错误?TypeError:第一个参数必须是ClientRequest.OutgoingMessage.write(_http_outing.js:456:11)at Request.write(D:\restfullApi\examicerapi\node_modules\Request\Request.js:1514:27)结尾(D:\restfullApi\testeerapi\node\u modules\request\request.js:552:18)在立即。(D:\restfullApi\testeerapi\node\u modules\request\request.js:581:7)在runCallback(timers.js:637:20)在tryOnImmediate(timers.js:610:5)在processimmediatecallback[as\u immediateCallback](timers.js:582:5)可能重复的for body,要成为json,您必须在
请求包中设置json:true
。请尝试在选项中添加json:true
。Axios也可以做到这一点: