gpt4 book ai didi

angular - 如何在发送之前动态更改 proxy.conf.js 中的请求

转载 作者:行者123 更新时间:2023-12-04 15:46:07 42 4
gpt4 key购买 nike

我有一个 Angular7 应用程序,想通过 Angular CLI 代理向 API 发送 HTTP 请求。然后 API 以 JSON 对象响应。我的代理配置是在 proxy.conf.js 中完成的。

带有简单目标的简单请求可以正常工作。但我想在发送之前动态更改请求。我在 https://github.com/angular/angular-cli/blob/master/docs/documentation/stories/proxy.md#bypass-the-proxy 找到了说明但我无法动态更改目标 url。

我的目标:
我想向天气 API 发送请求。我发送给该 API 的 url 必须包含城市的纬度和经度。城市将由用户选择。此用户输入应更改请求目标。

我发送的请求:
http://localhost:4200/forecast?lat=51.33962&lon=12.37129

这是我的 proxy.conf.js:

const PROXY_CONFIG = [
{
context: [
"/forecast",
],
target: "https://api.anyName.net/forecast/anyKey/37.8267,-122.4233",
changeOrigin: true,
secure: false,
pathRewrite: {
"^/forecast": ""
},
bypass: function(req, res, proxyOptions) {
if (req.query.lat) {
let LATITUDE = req.query.lat;
let LONGITUDE = req.query.lon;
const newTarget = "https://api.anyName.net/forecast/anyKey/"+LATITUDE+","+LONGITUDE;
req.target = newTarget;
return newTarget;
}
},
}
];

module.exports = PROXY_CONFIG;

我不太清楚如何使用旁路功能。我可以做些什么来改变目标?

最佳答案

嗯,我设法实现了我想要的。我确实错过了我在这一行 pathRewrite: {"^/forecast": ""}, 中所做的实际上是一个 RegEx,我可以操纵将要发送的请求。所以我做了以下事情:

const PROXY_CONFIG = [
{
context: [
"/forecast",
],
target: "https://api.anyName.net/forecast/anyKey/",
changeOrigin: true,
secure: false,
pathRewrite: function(path) {
const parameter = path.split("?")[1];
const latitude = parameter.split("&")[0].split("=")[1];
const longitude = parameter.split("&")[1].split("=")[1];

return path.replace(path, `${latitude},${longitude}`);
},
}
];

module.exports = PROXY_CONFIG;

我确实在这里找到了有用的文档 https://github.com/chimurai/http-proxy-middleware#options并在那里得到提示 Angular-CLI proxy to backend doesn't work

关于angular - 如何在发送之前动态更改 proxy.conf.js 中的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55679003/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com