gpt4 book ai didi

Azure APIM 转发自定义 header 并更改后端 URI

转载 作者:行者123 更新时间:2023-12-03 02:02:40 24 4
gpt4 key购买 nike

我是 azure APIM 的新手。我正在尝试实现这样的功能,我需要确保当客户端使用正确的订阅 key 发送请求并想要添加自定义 header 以路由到适当的后端服务 URL 时。在不添加 Web 服务 URL 的情况下,我仅添加 API URL 后缀。否则,我必须创建 10 个相同的 api,而 URL 几乎没有变化。

客户端将其请求中的自定义 header 添加到基本 URL https://my-app-api.azure-api.net/api/customers

Ocp-Apim-Subscription-Key:身份验证 key

“X-subjectName”:我的主题值

当请求到达后端并使用该 header 覆盖 URI 时,我需要从调用中提取自定义 header 并覆盖后端 URI。我可以通过政策来做到这一点吗?

覆盖我的后端 URI 后,它应该如下所示: https://my.api.com/api/v1/my-subject-value/客户

谢谢!

<小时/>

评论中的政策:

<inbound> 
<set-variable name="myvar" value="@(context.Request.Headers.GetValueOrDefault("my-header",""))" />
<set-backend-service base-url="my-api-backend.com{{myvar}}" />
</inbound>

最佳答案

请通过以下方式获取变量的值:
context.Variables.GetValueOrDefault<string>("myvar")

rewrite-uri变量的值可以附加到 URL:

<inbound> 
<set-variable name="myvar" value="@(context.Request.Headers.GetValueOrDefault("my-header",""))" />
<set-backend-service base-url="my-api-backend.com" />
<rewrite-uri template="@("/" + context.Variables.GetValueOrDefault<string>("myvar"))" copy-unmatched-params="false" />
</inbound>

请在下面找到一个完整的演示工作示例:

<policies>
<inbound>
<base />
<set-variable name="myvar" value="@(context.Request.Headers.GetValueOrDefault("my-header",""))" />
<rewrite-uri template="@("/?name=" + context.Variables.GetValueOrDefault<string>("myvar"))" copy-unmatched-params="false" />
<set-backend-service base-url="https://api.agify.io" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>

带有自定义 header 的请求:

enter image description here

跟踪结果:

enter image description here

关于Azure APIM 转发自定义 header 并更改后端 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75615417/

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