API 管理 API 端点一致性

问题描述 投票:0回答:1

我想询问是否有可能通过从函数应用程序导入所有函数来实现 API 管理端点的一致性。这将使我们能够拥有所有端点的单一事实来源,并确保我们的功能以最有效的方式得到利用。您能否提供有关如何实现这一目标的任何见解或建议?

更多详情: 目前,我们有许多使用 C# .NET Core 开发的功能应用程序驻留在 azure 门户中。

功能应用1 -> 所有用户相关功能

功能应用2 -> 所有用户服务相关功能

功能应用3 -> 所有用户预约相关功能

如果 APIM 主机名:https://dev-contoso-apim.azure-api.net

我们的做法是在API管理中将每个功能应用作为API导入,进行多种操作。我们为每个函数应用程序规划了一组专用的前缀端点。

功能应用1 -> 所有用户相关功能 -> api/v1.0/profiles

功能应用2 -> 所有用户服务相关功能 -> api/v1.0/services

功能应用3 -> 所有用户预约相关功能 -> api/v1.0/appointments

API 管理的预期基本端点,

所有用户相关功能 -> https://dev-contoso-apim.azure-api.net/api/v1.0/profiles

所有用户服务功能 -> https://dev-contoso-apim.azure-api.net/api/v1.0/services

所有用户预约功能 -> https://dev-contoso-apim.azure-api.net/api/v1.0/appointments

我尝试了各种方式使用 POC,最终遇到了很多关于如何在 API 管理和函数路由中管理前缀的问题。

以下是我尝试过的几个选项,但没有按预期工作。 用户预约可用日期 API 示例,

预期 APIM 端点:

https://dev-contoso-apim.azure-api.net/api/v1.0/appointments/availableDates/?serviceId=1&branchId=2&startDate=2024-02-01

选项1:我在C#中将函数Api Route设置为Route =

"v1.0/appointments/availableDates/"
as并将APIM前缀URL设置为空,API管理端点不是预期的端点,但API正在成功工作。

实际 APIM 端点:

https://dev-contoso-apim.azure-api.net/v1.0/appointments/availableDates/availableTimes/?serviceId=1&branchId=2&startDate=2024-02-01

注意

/api
在实际 APIM 端点中不存在。

选项2:如果我在服务器端将函数api路由更改为Route=

"availableDates"
并将APIM前缀url添加为
"api/v1.0/appointments"
,则APIM端点将按预期显示,如下所示并成功工作。

查询:我不希望像将来一样提供 APIM 前缀 URL 如果我需要 V2 版本,我无法使用相同的路由在服务器端添加新功能。

选项3: 如果我将 C# 中函数 Api 的路由设置为

"v1.0/appointments/availableDates/"
并将 APIM 前缀 url 设置为
"api"
,则 APIM 端点是预期端点,但 APIM API 无法正常工作。

错误:找不到资源。

如何设置我的 APIM 前缀和路由?

azure-api-management apim
1个回答
0
投票

我还创建了三个功能应用程序并通过以下方式导入到APIM-

  1. 我在导入第一个功能应用程序时添加 API 后缀为
    api/v1.0/profiles

enter image description here

因此基本 URL 将是

https://{apim-name}.azure-api.net/api/v1.0/profiles
。但所有操作都将有自己的 URL 模板,在访问该操作时该模板将被修改为基本 URL。 URL 模板充当我们在 Azure 函数中使用的路由参数

enter image description here

enter image description here

/Function1
作为路由值,对于 GET 操作,我的端点将是
https://{apim-name}.azure-api.net/api/v1.0/profiles/Function1

enter image description here enter image description here

  1. 同样的方法,我成功添加了第二个API后缀为
    api/v1.0/services
    的功能应用。

enter image description here

我在访问它时得到了预期的输出。

enter image description here enter image description here

这样,您也可以添加第三个API,API后缀为api/v1.0/appointments。但是两个 API 不能使用完全相同的 API 后缀,APIM 不允许这样做。

© www.soinside.com 2019 - 2024. All rights reserved.