如何在 Azure API REST 上处理每个客户的自定义
How to handle per-customer customizations on Azure API REST
我们在应用服务上托管了 REST API。 API 是无状态的,每个方法都会收到一个 API 密钥,并且取决于我们连接到一个或另一个数据源(API 对每个客户都是通用的,但他们有自己的数据库) . API 和数据结构对所有客户都是通用的。
现在我们有一些独特的、针对每个客户的请求,涉及自定义字段或仅存在于某些客户数据库中的功能,这些应该只适用于某些客户。
问题:处理这种情况的最佳方法是什么?
- 一切都在同一个 API 解决方案上,在请求时包括自定义代码并将整个事情部署到核心 API 端点。
- 更简单的解决方案但有风险,因为我们可能会在核心 API 进行自定义时引入错误。所有客户都可以看到和访问所有自定义方法。
- 一个核心 API,一个自定义 API,针对不同的客户使用所有不同的自定义方法。
- 普通客户将与核心 API 交互,所有自定义方法(并且仅自定义方法)分组在不同的 API 中,具有自己的端点。
- 自定义不会破坏核心 API。
- 一些客户将不得不与 2 个不同的端点(核心端点和自定义端点)进行交互
- 核心副本 API + 自定义方法部署到新的 API 实例,为有特殊需求的客户提供自己的端点?
- 每个客户只有一个端点:普通用户将到达核心 API,其他客户将拥有自己的 API 端点:核心和自定义方法
- 当每个自定义 API 都有一个副本时,如何处理核心 API 中的更改。
我完全没抓住要点吗?
提前致谢。
您需要在 APIM 中创建 产品。
首先,如果您只有一个 API,请将您的 API 分解为最小的一组 API,其中两个 API 之间没有冗余.您将把这些 API 集映射到产品。
接下来为每个客户创建一个 APIM 产品(或者为每组一个或多个将使用同一组 API 的客户创建一个产品)。创建产品后,仅映射与该产品中的那些客户相关的 API。
创建产品后,转到订阅选项卡并为您的产品范围创建新的订阅密钥。您的客户现在可以使用产品订阅密钥对他们的产品进行身份验证,并且该产品中不可用的其他 API 对他们来说将不可见或不可访问。
有关设置 APIM 产品的详细信息,请参阅:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-add-products?tabs=azure-portal
因为一个 API 可以用在一个或多个产品中,一个产品可以由一个或多个 API 组成,而客户端只有 API 可以访问在他们拥有关键的产品中,您可以轻松管理您的 API,而不会出现冗余或复杂性。
我们在应用服务上托管了 REST API。 API 是无状态的,每个方法都会收到一个 API 密钥,并且取决于我们连接到一个或另一个数据源(API 对每个客户都是通用的,但他们有自己的数据库) . API 和数据结构对所有客户都是通用的。
现在我们有一些独特的、针对每个客户的请求,涉及自定义字段或仅存在于某些客户数据库中的功能,这些应该只适用于某些客户。
问题:处理这种情况的最佳方法是什么?
- 一切都在同一个 API 解决方案上,在请求时包括自定义代码并将整个事情部署到核心 API 端点。
- 更简单的解决方案但有风险,因为我们可能会在核心 API 进行自定义时引入错误。所有客户都可以看到和访问所有自定义方法。
- 一个核心 API,一个自定义 API,针对不同的客户使用所有不同的自定义方法。
- 普通客户将与核心 API 交互,所有自定义方法(并且仅自定义方法)分组在不同的 API 中,具有自己的端点。
- 自定义不会破坏核心 API。
- 一些客户将不得不与 2 个不同的端点(核心端点和自定义端点)进行交互
- 核心副本 API + 自定义方法部署到新的 API 实例,为有特殊需求的客户提供自己的端点?
- 每个客户只有一个端点:普通用户将到达核心 API,其他客户将拥有自己的 API 端点:核心和自定义方法
- 当每个自定义 API 都有一个副本时,如何处理核心 API 中的更改。
我完全没抓住要点吗?
提前致谢。
您需要在 APIM 中创建 产品。
首先,如果您只有一个 API,请将您的 API 分解为最小的一组 API,其中两个 API 之间没有冗余.您将把这些 API 集映射到产品。
接下来为每个客户创建一个 APIM 产品(或者为每组一个或多个将使用同一组 API 的客户创建一个产品)。创建产品后,仅映射与该产品中的那些客户相关的 API。
有关设置 APIM 产品的详细信息,请参阅:https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-add-products?tabs=azure-portal
因为一个 API 可以用在一个或多个产品中,一个产品可以由一个或多个 API 组成,而客户端只有 API 可以访问在他们拥有关键的产品中,您可以轻松管理您的 API,而不会出现冗余或复杂性。