我创建了一个全新的函数应用程序并导入到 APIM。我尝试了以下选项来与客户期望的 API APIM 端点保持一致。但有些有效,有些则失败。
定义 APIM 后缀和 Function App 路由 url 真的很困惑?最好的考虑和遵循的做法是什么?
re-writeurl
政策在这种情况下有帮助吗?
预期客户 APIM 端点:
https://dev-contoso-apim.azure-api.net/api/v1.0/appointments/availableDates/?serviceId=1&branchId=2&startDate=2024-02-01
功能名称:
dev-contoso-appointments-func
APIM主持人:
dev-contoso-apim.azure-api.net
APIM 中预约 API 集合的设置。
函数API的路由在服务器端定义,如下所示
选项1:如果我在服务器端将函数api路由更改为
Route="availableDates"
并将APIM前缀url添加为api/v1.0/appointments
,则APIM端点将显示为预期,如下所示并成功工作。
查询: 我不希望将来提供 APIM 前缀 URL 如果我需要 V2 版本?我还可以添加吗?
预期 APIM 端点:
https://dev-contoso-apim.azure-api.net/api/v1.0/appointments/availableDates/?serviceId=1&branchId=2&startDate=2024-02-01
选项2:如果我按原样保留
Route = "v1.0/appointments/availableDates/"
并将APIM前缀url设置为空,APIM端点不是预期的端点,但APIM API正在成功工作。
实际 APIM 端点:
https://dev-contoso-apim.azure-api.net/v1.0/appointments/availableDates/availableTimes/?serviceId=1&branchId=2&startDate=2024-02-01
预期 APIM 端点:
https://dev-contoso-apim.azure-api.net/api/v1.0/appointments/api/v1.0/appointments/availableDates/?serviceId=1&branchId=2&startDate=2024-02-01
注意
/api
在实际 APIM 端点中不存在。
如何在选项2中设置我的APIM前缀和路由?
选项3: 如果我保留
Route = "v1.0/appointments/availableDates/"
并将 APIM 前缀 url 设置为 api
,APIM 端点是预期端点,但 APIM API 无法正常工作。
错误:找不到资源。
如何在选项2中设置我的APIM前缀和路由?
实际 APIM 端点:
https://dev-contoso-apim.azure-api.net/api/v1.0/appointments/availableDates/availableTimes/?serviceId=1&branchId=2&startDate=2024-02-01
预期 APIM 端点:
https://dev-contoso-apim.azure-api.net/api/v1.0/appointments/api/v1.0/appointments/availableDates/?serviceId=1&branchId=2&startDate=2024-02-01
我已经在函数中设置了
route="v1.0/appointments/availableDates/"
并将函数导入到APIM中,如下所示-
通过添加 API URL 后缀为
api/
,端点将变为 https://{apim-name}.azure-api.net/api/v1.0/appointments/availableDates/?serviceId=1&branchId=2&startDate=2024-02-01
。我在测试时能够得到预期的输出。
其次,您还可以将函数路径设置为
api/v1.0/appointments/availableDates/
,导入时将APIM后缀设置为空。
重写 URL 策略可用于添加查询字符串参数。