首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Api,apim未定义

Api,apim未定义
EN

Stack Overflow用户
提问于 2018-12-11 15:32:02
回答 1查看 3.2K关注 0票数 0

我们刚刚在我们的网站上安装了API 2018版本(安装在Openshift中),并试图遵循我在IBM教程中找到的一些示例。我的问题是我根本不能使用Gatewayscript策略,因为apim似乎根本没有定义。

我正在尝试一个简单的:

代码语言:javascript
复制
var req=apim.setvariable('message.body',"hello there!");

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

EN

回答 1

Stack Overflow用户

发布于 2019-01-15 22:05:34

背景

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

(1) DataPower网关- v5兼容

此网关与APIC v5兼容,因此GatewayScript策略也是如此。您不需要做任何额外的事情就可以使用apim.setvariable,就像在v5中不需要做的那样。

(2) DataPower API网关

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

APIGW选项

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

(选项1):将GatewayScript代码移植到新的API中使用GatewayScript中可用的新函数。这些应该有更好的接口,更好的性能,并有许多错误修复。一般来说,它们是在这里记录的:js.html

您希望在API上下文中设置变量的特定函数记录在这里:js.html#context.set

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

(选项2):如果您想使用新的APIGW作为其他优势,但是您也有GatewayScript策略,您没有太多的时间进行移植,并且您愿意暂时保持较低的性能等等,那么对于这些GatewayScript策略,您可以在APIGW的GatewayScript策略实现中使用Compatibility Layer

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

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

例如,在您的问题中:

代码语言:javascript
复制
var apim = require('apim');
var req=apim.setvariable('message.body',"hello there!");

为什么强迫你多加一行呢?原因之一是它有助于确保您不会意外地在您为API 2018及以后编写的新Compatibility Layer上使用该GatewayScripts。虽然旧函数仍然可用,但默认情况下,它只会帮助您使用性能更高的更新函数。当需要时,它只是在脚本顶部的额外一行。

摘要

总的来说,对于旧的APIC v5 GatewayScript策略,您可以使用APIC 2018的三个选项:

  • DataPower网关- v5兼容-完全兼容和重用您的旧脚本文件。
  • 具有兼容性层的DataPower API网关--增加一个额外的require行,并且有一个非常容易移植的体验。
  • DataPower API网关完全原生-最好的体验和性能,但更多的工作来移植您的脚本,使用这里记录的新功能:js.html
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53727406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档