如何在Azure APIM策略中解码HTTP请求查询字符串?

时间:2020-03-27 07:06:39

标签: urldecode apim

我具有以下格式的URL,并且我想对查询字符串进行解码并重新编写URL。

https://api.test.abc.com/parameters?username=%7Busername%7D

如何使用策略对用户名进行解码,并以以下格式重写它:

API端点:/api/affiliated/users/userInfo/?username=abcd.gmail.com

非常感谢。

3 个答案:

答案 0 :(得分:0)

您可以手动对其进行解码。

context.Request.Url.Query["username"] | Replace:'%7B','{' | Replace:'%7D','}'

将该用户名保存在一个变量中,然后在重写模板中使用它。

我也想知道一些在APIM策略中解码网址的方法。

答案 1 :(得分:0)

您可以在 APIM 策略中使用 System.Net.WebUtility

System.Net.WebUtility.UrlDecode(context.Request.Url.Query["username"]

答案 2 :(得分:0)

我们不能直接解码,因为没有选项,我们必须删除第一个查询参数并通过更改和解码查询参数来重写URI。我使用下面的代码片段来执行它。 (因为问题也是将 URL 中的 userName 替换为 visibleToUserId 并解码该值。)

@((Convert.ToBase64String(Encoding.UTF8.GetBytes((string)context.Request.MatchedParameters[\"visibleToUserId\"]))).Replace('=', '~').Replace('+', ' -')。代替('/', '_'))