我的 server.js 中有这个
app.post("/leadAPI/ed",function(request,response){
//api post code here
});
在这个发布请求中,我需要将请求正文中包含的数据发布到具有特定 URL 的某些外部 API,并使用 response.send 将响应发回。如何以干净的方式做到这一点。在expressjs中有什么内置的吗?
我的 server.js 中有这个
app.post("/leadAPI/ed",function(request,response){
//api post code here
});
在这个发布请求中,我需要将请求正文中包含的数据发布到具有特定 URL 的某些外部 API,并使用 response.send 将响应发回。如何以干净的方式做到这一点。在expressjs中有什么内置的吗?
正如 Andreas 所说,这不是 express 的职责。它的职责是在 HTTP 请求进来时调用你的函数。
您可以使用 node 的内置 HTTP 客户端,正如 Andreas 在评论中提到的那样,向您的外部站点发出请求。
尝试这样的事情:
var http = require('http');
app.post("/leadAPI/ed", function(request, response) {
var proxyRequest = http.request({
host: 'remote.site.com',
port: 80,
method: 'POST',
path: '/endpoint/url'
},
function (proxyResponse) {
proxyResponse.on('data', function (chunk) {
response.send(chunk);
});
});
proxyRequest.write(response.body);
proxyRequest.end();
});
我确定您需要对其进行调整以处理分块响应并找出传输编码,但这就是您需要的要点。
有关详细信息,请参阅
我会为此使用 Mikeal Rogers 的请求库:
var request = require('request');
app.post("/leadAPI/ed",function(req, res){
var remote = request('remote url');
req.pipe(remote);
remote.pipe(res);
});
你可以这样做。
var request = require('request');
var url = "<remote url>"
app.post("/leadAPI/ed",function(request, response){
request.get({url:url, headers:request.headers, body:request.body}, function (err, res, body) {
if(!err) {
response.status(200).send(res) // JSON.stringify(res) if res is in json
}
})
})
请记住,两者的内容类型应该相同。