【问题标题】:IBM API Connect > Encapsulating a Path variableIBM API Connect > 封装路径变量
【发布时间】:2018-10-11 16:04:43
【问题描述】:

我正在使用 API 连接与我使用的数据库之一进行接口,而不是通过代码直接将查询发送到 Rest API(这对我正在做的事情来说效率更高)。但可惜,不允许。

无论如何,这是我的问题:

 BASE PATH:   

 https://api.com/apim

所有内容都附加到此示例 URL 的末尾,例如:

 API PATH:

 https://api.com/apim/myapi/{some value}

 Values: '\Project\ProjectInfo\'

URL 试图接受它作为 URL 的一部分,而不是作为我试图发送到 API 本身中定义的查询的字符串。这给我们带来了一些 HTTP 错误,我不确定我们如何才能绕过将值封装到某些东西中。问题是我不确定 API 连接是否可以做到这一点。不幸的是,无法更改需要文件路径类型值的查询。

你们中的任何一个优秀的小伙子在 API 连接方面的经验比我目前极其有限的知识还要多吗?

【问题讨论】:

    标签: apiconnect


    【解决方案1】:

    您可以尝试以查询字符串格式发送额外路径,与变量关联,并为请求 html 编码 de 值。

     \Project\ProjectInfo\ => %5CProject%5CProjectInfo%5C
    

    然后你在查询字符串变量中分配你的编码值:

    https://api.com/apim/myapi/variable=%5CProject%5CProjectInfo%5C
    

    然后您可以使用“gatwwayScript”策略来解码该值:

    https://www.ibm.com/support/knowledgecenter/en/SS9H2Y_7.7.0/com.ibm.dp.doc/querystring_js.html

    【讨论】:

      【解决方案2】:

      1:从您的示例看来,您正在尝试使用路径参数来确定对后端的请求。如果这是有意的,那么您只需要在您的调用/代理策略中引用该变量。

      IE:https://api.com/apim/myapi/{someValue} 关于如何使用路径变量的问题解答:Is it possible to use wildcards in API paths in IBM API Connect

      调用/代理策略中的引用变量: - invoke: target-url: "https://mybackend.com$(someValue)"

      2:您可以将所需的路径段拆分为多个变量,并使用策略 IE:gatewayscript 或 map 来构建调用/代理策略引用的 url 变量,以调用 DB。

      IE:https://api.com/apim/myapi/{someProject}/{someProjectInfo}

      3:您可以在您的 api 路径中将其作为必需的查询参数,并在您的调用/代理策略中引用该变量。这将允许整个后端请求是动态的,因此您不必在后端地址更改时重新发布

      IE:https://api.com/apim/myapi/dbCall?dbUrl="https://somebackend.com/project/projectinfo"

      调用中的参考: - invoke: target-url: "$(dbUrl)"

      同样,您可以要求它位于请求标头或正文中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-21
        • 2012-11-26
        • 2017-10-10
        • 2017-03-10
        • 2020-10-24
        • 1970-01-01
        相关资源
        最近更新 更多