【发布时间】:2019-08-10 14:59:15
【问题描述】:
下午好,
我有一种情况,三个 swagger 文件将具有不同的资源,但它们属于同一个域。而且我不能将它们合并成一个单一的招摇,因为我们有很多这样的场景,并且管理一个招摇和单个 api 代理将是一个很大的开销。
例如:
我有 3 个具有以下路径和资源的 api
/supermarket/v1/aisles/{aisleId}/itemcategories
/supermarket/v1/aisles/{aisleId}/itemcategories/{itemcategoryId}/seasonedvegetabletypes
/supermarket/v1/aisles/{aisleId}itemcategories/{itemcategoryId}/seasonedvegetabletypes/{vegetablestypeId}/apples
以上3个都应该在3个不同的swagger文件中,所以我需要为上面创建3个api代理。
由于所有路径后缀“/supermaket”都相同,Azure API 管理器将不允许创建另一个具有相同路径后缀的 api 代理,因为它必须是唯一的。
所以要在 Apigee Edge (Google Edge) api 管理产品中实现这一点。我将有如下基本路径
/supermarket/v1 /supermarket/v1/aisles//itemcategories/ /supermarket/v1/aisles//itemcategories/*/seasonedvegetabletypes
这样我就可以避免唯一路径约束,也可以实现创建 3 个 api 代理。
但在创建 API 代理时,Azure API 管理器不接受 API 路径后缀字段中的“通配符”条目。
注意:
您可能建议将 3 个 api 组合到一个 swagger 文件中可能会解决问题,但我上面给出的示例只是 30% 的 swagger,我们有许多这样的路径将落入一个单一的业务领域,所以我们必须有它们在不同的 swagger 文件和不同的 api 代理中。
我们应该能够通过允许通配符或正则表达式进入 API 路径后缀来部署具有相同路径后缀的不同 API 代理。
非常感谢您为解决此问题提供的帮助。谢谢。
【问题讨论】: