【发布时间】:2018-01-23 13:25:09
【问题描述】:
我是 DP 的新手;
我得到了一个包含 很多 规则的 MPGW 策略,我希望它们全部或至少它们的 POST/PUT 请求能够运行 GWscript 以进行日志记录。 - 我可以轻松地将 GWS 操作插入到所有指定的规则中吗? - 或者我可以制定一个规则(执行脚本)并让接下来处理实际的特定规则吗? (是否有多个规则处理?)
TIA!
【问题讨论】:
标签: ibm-datapower
我是 DP 的新手;
我得到了一个包含 很多 规则的 MPGW 策略,我希望它们全部或至少它们的 POST/PUT 请求能够运行 GWscript 以进行日志记录。 - 我可以轻松地将 GWS 操作插入到所有指定的规则中吗? - 或者我可以制定一个规则(执行脚本)并让接下来处理实际的特定规则吗? (是否有多个规则处理?)
TIA!
【问题讨论】:
标签: ibm-datapower
正如 August 已经说过的,您可以选择使用呼叫处理规则的“可重用规则”,但恕我直言,这会变得非常混乱,尤其是在您有很多规则的情况下。
我通常采用我称之为“可重用服务”或“切换操作”的两个选项之一(是的,我自己编造了这些名称所以你不会在 DataPower 文档中找到它)...
“可重用服务”是我为许多客户实现的,我通常在 Loopback 中使用 XML 防火墙(但 MPGW 也可以)。您可以在那里拥有许多不同的功能,例如记录、转换、验证等,然后您在每个规则中对该服务进行“更简单”的 URL-Open() 调用。 您可以锁定 XMLFW 以仅侦听 127.0.0.1,从而使其隔离。这仍然会强制您将调用添加到每个规则,但也许您可以将 URL-Open() 添加到现有的 GWS 或共享脚本...
我用于基于“REST”的网关的另一种方法是编写“切换操作”。然后您设置更少的规则(甚至可能只是一个),但我尝试为每个 HTTP 方法设置一个规则,然后在第一个操作中添加一个 GWS(可以通过“可重用服务”记录)查看 URI(通常)和/ 或 Header 并运行 Switch() 以加载特定的 GWS 模块。每个 GWS 模块都是根据 Switch() 命名的,因此很容易跟踪,并且“Switch 模块”可以依次调用其他共享模块,从而使您的代码更清晰(更小)。 这样做的好处当然是更少的规则和更高效的代码,但是您会失去一些监督(以图形方式),但是由于您将模块分开,与您以前的规则相匹配,您只需查看包含的 GWS 文件即可掌握。如果您为每个服务/方法/规则添加一个 GWS 目录,您将比查看(或添加)代码更轻松。
local:///GWS/MyMPGWRestGW/index.js <-- This is your main script
local:///GWS/MyMPGWRestGW/POST/createSomething.js
local:///GWS/MyMPGWRestGW/POST/createSomethingElse.js
local:///GWS/MyMPGWRestGW/PUT/updateSomething.js
local:///GWS/MyMPGWRestGW/GET/fetchMeSomething.js
local:///GWS/MyMPGWRestGW/DELETE/deleteSomething.js
local:///GWS/MyMPGWRestGW/HEAD/echoSomething.js
在不久之后发布的 DataPower 固件中,我希望(已经有一个开放的演示)我们将获得一个名为“API Gateway”的新服务,它可能在这些场景中可用。我没有太多可以分享的信息,但是如果您获取演示(一个 Docker 设置),您可以访问运行它的 DataPower 并查看新的 API 网关服务的运行情况:https://github.com/ibm-apiconnect/apigateway-experimental
考虑到这一点,我们可能很快就会有更好的工具来创建这些场景......注意!请注意MIGHT,因为我们不知道实际会发布什么,或者我们是否可以将其用作服务,或者它是否仅专用于 API Connect!
【讨论】:
嗯,有一个调用处理规则操作您可能需要检查是否符合您的需求(如果这些操作比一个简单的 GatewayScript 操作更复杂)。请参阅 https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.6.0/com.ibm.dp.doc/action_definingreusablerules.html
上有关可重用规则的 KC
因此,要么将呼叫处理规则操作添加到所有现有规则,要么将 GatewayScript 操作本身删除到所有现有规则。这很“容易”,但还有一些工作要做。
默认情况下真的需要全部记录吗?这很容易淹没您的日志系统,因此请做好计划。
另外,Log Action 怎么样,是否也能满足您的需求?
抱歉,如果我的回复有点混乱,但只是输入我想到的内容。
【讨论】: