【问题标题】:Api Connect GatewayScript, apim is not definedApi Connect GatewayScript,未定义apim
【发布时间】:2019-01-16 15:57:56
【问题描述】:

我们刚刚在我们的场所安装了 API Connect 2018 版本(安装在 Openshift 中),并尝试按照我在 IBM 教程中找到的一些示例进行操作。我的问题是我根本无法使用 Gatewayscript 策略,因为似乎根本没有定义 apim。

我正在尝试一个简单的:

var req=apim.setvariable('message.body',"hello there!");

我得到的确切错误是:GatewayScript 错误:GatewayScript 处理错误'ReferenceError:apim 未定义。我在这里想念什么?为什么所有 IBM 教程中似乎都定义了“apim”,而我们的安装中却没有?

【问题讨论】:

  • 我在尝试使用 DataPower API Gateway(而不是兼容 DataPower Gateway v5)时遇到了这个问题。我注意到 apim 的所有代码都没有像在 v5 兼容上那样部署到网关..

标签: apiconnect


【解决方案1】:

背景

API Connect 2018 为网关提供了两个选项。

(1) DataPower Gateway - v5 兼容

此网关与 APIC v5 兼容,因此 GatewayScript 策略也是如此。您无需执行任何额外操作即可使用 apim.setvariable,而在 v5 中您不需要这样做。

(2) DataPower API 网关

这是 APIC 2018 中提供的新网关。它提供了许多界面改进。性能、可调试性等。它完全向后兼容。您似乎正在使用这个新网关。


APIGW 选项

对于 GatewayScript 策略中的 apim.setvariable 特定示例,您有两个选项,同时仍使用此 APIGW:

(选项 1):移植您的 GatewayScript 代码以在新 API Gateway 中使用 GatewayScript 中提供的新功能。这些应该有更好的接口,更好的性能,并修复了许多错误。一般来说,它们记录在这里:https://www.ibm.com/support/knowledgecenter/en/SS9H2Y_7.7.0/com.ibm.dp.doc/context_apigw_js.html

您正在寻找在 API 上下文中设置变量的特定函数记录在此:https://www.ibm.com/support/knowledgecenter/en/SS9H2Y_7.7.0/com.ibm.dp.doc/context_apigw_js.html#context.set

要像上面的示例那样在 API 上下文中设置一个变量,它可能是: context.set('message.body',"hello there!");

(选项 2):如果您想使用新的 APIGW 获得其他优势,但您也有没有太多时间移植的 GatewayScript 策略,并且您愿意保持较低的性能等。暂时在 API 的那一部分,然后对于那些 GatewayScript 策略,您可以在 APIGW 的 GatewayScript 策略实现中使用Compatibility Layer

这会减少您的整体移植时间,但可能仍需要对脚本进行一些更改。

要使用此Compatibility Layer,请将显式行var apim = require('apim'); 添加到GatewayScript,然后您可以使用apim 向后兼容函数。

例如,在您的问题中:

var apim = require('apim');
var req=apim.setvariable('message.body',"hello there!");

为什么要强制你添加额外的行? 原因之一是它可以帮助您确保不会在您为 API Connect 2018 及更高版本编写的新 GatewayScripts 上意外使用 Compatibility Layer。虽然旧功能仍然可用,但默认情况下它会尝试帮助您仅使用更高性能的新功能。需要时,只需在脚本顶部多出一行。


总结

总体而言,API Connect 2018 为您的旧 APIC v5 GatewayScript 策略提供了三个选项:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2018-11-12
    相关资源
    最近更新 更多