嗨,我有一个简单的基于expressjs的服务器,它充当代理。 它根据传入的请求执行一个新的http请求,并在获得响应后将其发送回原始请求。以下代码可以正常工作,但是当响应包含 statusCode 301和statusMessage永久移动时,它将失败。 我尝试使用follow-redirects,但这似乎随后将我的发布请求转换为get请求。 下面是我的代码
"use strict";
var express = require("express");
var app = express();
const http = require("http");
var bodyParser = require("body-parser");
var followRedirects = require('follow-redirects');
app.use(bodyParser.json());
function pipeResponse (source, sink) {
console.log("***********Response ***************");
console.log("->>statusCode "+source.statusCode);
console.log("->>statusMessage "+source.statusMessage);
sink.statusCode = source.statusCode;
sink.statusMessage = source.statusMessage;
console.log("----------Response Headers ---------");
Object.keys(source.headers).
forEach((name) => {
console.log(name+" : "+source.headers[name]);
sink.setHeader(name, source.headers[name]);
});
console.log("-------------------------------------");
source.on("data", (ce) => {
sink.write(ce);
console.log("data present" );
});
source.on("end", () => sink.end());
console.log("**************************************");
}
// used to handle both query/read and modify operations on entityset people
app.all("/api/people", (req, res) => {
// sample service
var options = {"headers": {}};
options.host = "services.odata.org";
options.path = "/TripPinRESTierService/(S(3mslpb2bc0k5ufk24olpghzx))/People";
options.method = req.method;
console.log("request method type " + req.method);
if(req.headers["content-type"]){
options.headers["content-type"] = req.headers["content-type"];
}
var payLoad ;
payLoad = req.body;
//var proxyRequest = followRedirects.http.request(options, (backendres) => pipeResponse(backendres, res));
var proxyRequest = http.request(options, (backendres) => pipeResponse(backendres, res));
proxyRequest.on("error", (err) => {
console.error("request failed",err);
});
if (payLoad) {
console.log("payload data " + JSON.stringify(payLoad));
proxyRequest.write(JSON.stringify(payLoad));
}
proxyRequest.end();
});
app.listen(8080, () => {
});
请问有什么身体可以帮助我解决这个问题。
帖子正文如下
{
"UserName":"lewisblack",
"FirstName":"Lewis",
"LastName":"Black",
"Emails":[
"lewisblack@example.com"
],
"AddressInfo": [
{
"Address": "187 Suffolk Ln.",
"City": {
"Name": "Boise",
"CountryRegion": "United States",
"Region": "ID"
}
}
]
}