【问题标题】:Duplicate API is getting created in WSO2 API Manager Publisher在 WSO2 API Manager Publisher 中创建了重复的 API
【发布时间】:2020-01-15 05:27:05
【问题描述】:
我发布了一个名为“DocumentAPI”的 API,发布后我可以在发布者中找到两个名为“DocumentAPI”的 API。在商店中只能找到一个名为“DocumentAPI”的 API。尝试删除、重新创建和重新发布 API,还重新启动了我的服务器。
当前环境中有两个网关(内部(MZ)和外部(DMZ)),这意味着一些 API 是特定于内部的,一些是特定于外部的,有些则发布到两个网关(当前有问题的 API 发布到两个网关)
这两个节点之间没有同步方法设置。
我们在 APIM-2.6.0
对于有问题的 API,AM_API、REG_PATH 表中没有重复条目。只有在发布者 UI 中,我们才能看到两个具有相同名称、版本和 conetxt 的 API,当我修改任何一个 API 时,更改也会立即反映到其他 API 中。在商店中只显示一个 API,当我通过 Postman 测试此 API 时,后续调用失败。
注意:在完全分布式环境中发布。
【问题讨论】:
标签:
wso2
wso2-am
publisher
【解决方案1】:
- 您使用的是 APIM wum 更新包还是原版包?如果是wum,wum级别是多少(AM_HOME/updates/wum)?
- 您是否尝试重新创建一个新的 API 而不是那个“DocumentAPI”名称(使用不同的名称),并且在发布到两个 GW 节点时您是否看到了同样的问题?
- 在 APIM 2.6.0 中,如果我们创建了一个大写的 API(例如:AbcAPi)并发布它,我们会看到类似的问题。然后删除它并尝试重新创建具有相同名称但小写的api(例如:abcApi)并发布它。然后我们可以在发布者门户中看到两个 API,但在 Store UI 中看不到。 AM Table 有一条记录。但在注册表中有两条路径(如您所见)。
例如:
- /_system/governance/apimgt/applicationdata/provider/admin/AbcAPi
- /_system/governance/apimgt/applicationdata/provider/admin/abcApi
旧 API 名称的一个路径和新 API 的另一个路径。从目前开始,我们已经修复了这个问题,并且该修复程序在 APIM 2.6.0 的最新 wum 更新包中可用。因此,您是否注意到两个 reg 路径中的这种差异(从 REG_PATH where REG_PATH_VALUE 中选择 *)。
如果是,它已在 APIM 2.6.0 的最新 wum 中修复。这里的原因是在删除 API 时,它会保留旧 API 的一些元数据,而在重新创建注册表时会保留两个路径。
【解决方案2】:
在 wso2 APIM 中创建 API 时,不允许创建两个具有相同名称、上下文和版本的 API(名称、上下文和版本应该是唯一的)。
根据提供的详细信息,我们希望发布者节点中的两个 API 具有相同的名称、上下文和版本。
- 在您的分布式设置中有多少 GW 可用(一个或多个)?
- 如果有多个 GW 节点,您是否使用任何部署工件同步方法,例如 NFS?
- 什么是 APIM 版本
- 您是否注意到上述 API 在 AM 数据库(AM_API 表)中有两条记录?
【讨论】:
-
-
- 您使用的是 APIM wum 更新包还是原版包?如果是 wum,那么 wum 级别是多少(/updates/wum)? - 您是否尝试重新创建一个新的 API 而不是那个“DocumentAPI”名称(使用不同的名称),并且在发布到两个 GW 节点时您是否看到了同样的问题?