【问题标题】:Making query params optional in IBM API Connect在 IBM API Connect 中使查询参数可选
【发布时间】:2018-11-15 19:14:21
【问题描述】:

您好,我们正在使用 IBM Api Connect 作为我们 api 的网关,我无法弄清楚如何使查询参数成为可选,我尝试在 IBM api connect 的设计和组装部分中这样做,但没有运气。

这是我要调用的最终 URL www.testdomain.products/getProducts?param1 = " "& param2 = " " & param3 = " "

这里所有的参数都是可选的,我把这个网址作为

www.testdomain.products/getProducts?param1=$(request.parameters.param1)&param2=$(request.parameters.param2) & param3=$(request.parameters.param3)

在一个用例中,我只传递了 param1,并希望仅使用 param1 构建最终 url,但这就是我所看到的

www.testdomain.products/getProducts?param1="value"&param2=&param3=

我应该怎么做才能只使用我传递的值来构造 url,就像这样

www.testdomain.products/getProducts?param1="value"

【问题讨论】:

  • 这和 IBM MQ 有关系吗?
  • 当你说你没有运气时,这是什么意思?您调用了 API,但它抱怨缺少查询参数?还是什么?
  • 嗨,马特,对不起,我的问题不清楚,我已经更新了问题。

标签: apiconnect


【解决方案1】:

您似乎只想代理查询字符串?在这种情况下,您可以使用 $(target-url)$(request.search) 作为调用 URL。

【讨论】:

    【解决方案2】:

    这可以通过使用脚本创建动态目标 URL 来实现,而不是在调用/代理操作中设置静态后端服务 URL。

    装配部分

    在调用之前获取GatewayScript Action

    var targetUrl = "www.testdomain.products/getProducts?";
    var input_param1 = apim.getvariable('request.parameters.param1');
    var input_param2 = apim.getvariable('request.parameters.param2');
    
    
    if(input_param1 !==null || input_param1 !="" || input_param1 != undefined ){
        targetUrl = targetUrl.concat("param1="+input_param1))
    }
    if(input_param2 !==null || input_param2 !="" || input_param2 != undefined ){
        if(targetUrl.indexOf('param1') > 0){
            targetUrl = targetUrl.concat('&')
        }
        targetUrl = targetUrl.concat("param2="+input_param2))
    }
    
    apim.setvariable('target-url',targetUrl)
    

    在调用/代理中 - 使用此 $(target-url)

    可能存在一些语法问题,但我们可以使用上述方式实现。谢谢!

    【讨论】:

    • 嗨 Srikanth..thankyou.. 我实施的解决方案是通过将 $(request.querystring) 附加到我的网址,例如 - 这个 www.testdomain.products/getProducts?$(request.querystring)在 INVOKE 中,设计部分中为路径配置的所有参数都是可选的
    • 如果它工作正常,那么不用担心。否则你可以按照上面的方法。谢谢。
    • 嗨 Srikanth 我还有一个问题.. 我在另一个线程中发帖 stackoverflow.com/questions/53539822/… ..
    • 您好 Vinay,分享了从 IBM 社区找到的一些答案,希望对您有所帮助。如果对您有帮助,请为答案投票
    • 但是如果您尝试在 IBM 开发门户中对其进行测试,这将不起作用。 “试用”选项不会让您指定任何查询字符串。
    猜你喜欢
    • 2018-03-27
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2020-01-06
    相关资源
    最近更新 更多