【问题标题】:Azure API Management - Optional ParametersAzure API 管理 - 可选参数
【发布时间】:2017-09-19 21:02:10
【问题描述】:

我正在尝试使用可选的查询参数。但是当我尝试在我的主体映射中访问此参数到我的后端 SOAP 服务时,我没有得到任何结果。

我这样定义参数。

我正在尝试使用此代码在我的 Liquid 模板中访问它。

{{context.Request.Url.Query.GetValueOrDefault("test","false")}}

但结果只是空的。有人可以帮我找出我做错了什么吗?

【问题讨论】:

    标签: azure liquid azure-api-management


    【解决方案1】:

    尝试改用context.Request.OriginalUrl。 OriginalUrl 是进入网关的内容。 context.Request.Url 是在为后端重写之后。

    【讨论】:

    • 我刚试过这个,但我的请求消息中仍然是空的。 {{context.Request.OriginalUrl.Query.GetValueOrDefault("test","false")}} 奇怪的是,当我在 set-body 之前对同一个参数进行跟踪时,我可以获得一个值。但是当我尝试在 set-body 中访问它时,它是空的。即使我先把它放在一个变量中。
    • @TimD'haeyer Ahhh,我看到了这个问题。不幸的是,Liquid 绑定和 C# 表达式的工作方式不同。您正在做的是一个 C# 表达式,需要进入 @(...)@{...} 不幸的是,我们无法在 Liquid 模板中复制该语法,因为 Liquid 绑定仅支持访问数组和映射。你应该能够做到{{ context.Request.OriginalUrl.Query.test[0] }},但它目前不适合我。我正在调查原因。
    • @TimD'haeyer 哇,太棒了,现在要弄清楚我做错了什么!
    • @TimD'haeyer 如果这个绑定在你身上中断,那是我的错。最新版本中有一个回归。这就是为什么它对我不起作用!今天发布了一个修补程序。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    相关资源
    最近更新 更多