如何通过APIM暴露Azure Functions并实现指定URL路径且不使用空后缀
实现需求的两种可行方案
两种方案均无需将API URL后缀留空,不会影响后续其他API的正常添加。
方案1:全局入站路由重写 + API层路径重写(推荐)
- 正常创建对接User Function App的API,将API URL后缀设置为
userfunction,避免和后续其他API冲突。 - 在该API下创建两个对应操作:
- CreateUser:请求方法选
POST,操作路径填写/v1/users - GetUsers:请求方法选
GET,操作路径填写/v1/users
- CreateUser:请求方法选
- 进入APIM的全局策略配置页,在入站处理段添加如下策略,将所有路径匹配
/v1/users的请求,转发到userfunctionAPI下:
<policies> <inbound> <base /> <choose> <when condition="@(context.Request.OriginalUrl.Path.StartsWith("/v1/users"))"> <set-backend-service backend-id="你绑定的User Function App对应的后端ID" /> <rewrite-uri template="/userfunction{request.originalUrl.Path}" copy-unmatched-params="true" /> </when> </choose> </inbound> <backend> <base /> </backend> <outbound> <base /> </outbound> <on-error> <base /> </on-error> </policies>
- 进入
userfunctionAPI的单独策略配置页,在入站处理段添加路径重写策略,将路径转换为后端Function实际的路由/users:
<inbound> <base /> <rewrite-uri template="/users" copy-unmatched-params="true" /> </inbound>
注意:你可以在APIM的「后端」管理页面找到对应Function App的backend-id,替换为你实际的ID即可。
方案2:调整API路径层级规划
如果你的接口是按版本做统一路径划分的,可以直接把该API的URL后缀设置为v1,后续同版本的其他接口可以合并到该API下作为不同操作,不同版本的API可以设置后缀为v2、v3等。此时你只需要把两个操作的路径填写为/users,就能直接得到你需要的/v1/users访问路径,无需额外配置重写策略,适合路径规划清晰的场景。
内容的提问来源于stack exchange,提问作者adelb
相关产品推荐
相关产品推荐

