繁体   English   中英

Azure 功能 / API:如何创建代理

[英]Azure functions / API: How to create a proxy

我正在尝试创建一个将转发我的请求的代理应用程序。

我会这样使用它(适用于一些公共代理):

var proxy = new WebProxy { Address = new Uri("proxyUrl") };
var httpClientHandler = new HttpClientHandler { Proxy = proxy };
var client = new HttpClient(handler: httpClientHandler, disposeHandler: true);
await client.GetAsync("https://www.whatsmyip.org");

我发现了这个和微软的这个指南,但是它们似乎已经过时了,因为函数不能再有代理了。 将鼠标悬停在“代理”上告诉我:“此功能不适用于 V4 功能应用

在此处输入图像描述

我发现了这个,它建议使用 API Management 代替。 所以我尝试了。 它看起来像这样: 在此处输入图像描述

使用右侧的后端配置,如果我覆盖“服务 URL”,我可以将请求转发到特定的 url: 在此处输入图像描述

但我想使用它,如我的第一个代码片段所示,作为适用于任何端点的真正代理。 有什么想法吗?

有/曾经有一个名为 Azure 函数代理的功能。 这用于重定向/修改请求。 但是,即使此功能现在消失了,也不意味着您无法实现将您重定向到另一个网站的功能。

[FunctionName(nameof(Redirect))]
public static IActionResult Redirect(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "redirect")] HttpRequest req,
    ILogger log)
{   
        return new RedirectResult("https://google.com", true);
}

如果您只想为其他 API 调用提供接口,我会推荐 APIM。 但是您也应该能够使用 Functions 返回您想要的任何结果,但是您需要自己完全实现它。

它可能看起来像这样(未经测试)

[FunctionName(nameof(RemoteAPICall))]
public static IActionResult RemoteAPICall(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "proxy")] HttpRequest req,
    ILogger log)
{   
    var response = await client.GetAsync("http://www.wtfismyip.com/json");
    return new OkObjectResult(response.Content);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM