对多个规则执行相同的操作

Executing same action for multiple rules

我是 DP 新手;

我得到了 MPGW 的政策,其中包含 很多 的规则,我希望他们所有人,或者至少他们的 POST/PUT 请求,能够 运行用于记录目的的 GWscript。 - 我可以轻松地将 GWS 操作插入所有指定的规则吗? - 或者我可以制定一个规则(执行脚本)并让接下来处理实际的特定规则吗? (是否有多个规则处理?)

TIA!

好吧,您可能需要检查一个调用处理规则操作是否符合您的需要(如果这些操作比一个简单的 GatewayScript 操作更复杂)。请参阅 https://www.ibm.com/support/knowledgecenter/SS9H2Y_7.6.0/com.ibm.dp.doc/action_definingreusablerules.html
中关于可重用规则的 KC 因此,您要么将呼叫处理规则操作添加到所有现有规则,要么将 GatewayScript 操作本身删除到所有现有规则。它是 "easy",但还有一些工作要做。
默认情况下真的需要全部记录吗?这很容易淹没您的日志系统,因此请做好规划。
还有,Log Action怎么样,是不是也能满足你的需求?

对不起,如果我的回复有点乱,只是输入我想到的内容。

正如 August 所说,您可以选择 "Reusable Rules" 使用呼叫处理规则,但恕我直言,这会变得非常混乱,尤其是当您有很多规则时。

我通常会选择我称之为“可重用服务”或“切换操作”的两个选项之一(而且,是的,这些名称是我自己编的,因此您不会在 DataPower 文档中找到它)...

"Reusable Service" 是我为许多客户实施的,我通常在 Loopback 中为此使用 XML 防火墙(但 MPGW 也可以)。你可以在那里有许多不同的功能,例如日志记录、转换、验证等,然后在每个规则中调用此服务的 "simpler" URL-Open() 。 您可以锁定 XMLFW 以仅侦听 127.0.0.1,从而将其隔离。这仍然会迫使您将调用添加到每个规则,但也许您可以将 URL-Open() 添加到现有的 GWS 或共享脚本...

我用于基于 "REST" 的网关的另一种方法是编写 "Switch Action"。然后你设置更少的规则(或者甚至可能只设置一个)但我尝试为每个 HTTP 方法设置一个规则然后在第一个操作中我添加一个 GWS(可以通过 "Reusable Service" 记录)查看 URI(通常) and/or Header 和 运行 用于加载特定 GWS 模块的 Switch()。每个 GWS 模块都根据 Switch() 命名,因此很容易跟踪并且 "Switch modules" 可以依次调用其他共享模块,使您的代码更清晰(更小)。 这样做的好处当然是更少的规则和更高效的代码,但是你失去了一些监督(图形上)但是因为你有模块分离匹配你以前的规则你可以通过查看包含的 GWS 文件来掌握。如果您为每个 Service/Method/Rule 添加一个 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 连接!