如何从Azure APIM自定义域端点中移除Function App名称?
解决Azure APIM移除Function App名称后资源找不到的问题
问题根源
你配置<rewrite-uri template="/x/y/{z}/get" />时,APIM会将请求转发到https://myFunctionApp.azurewebsites.net/x/y/{z}/get,但你的Function App实际接收的路径需要带/api前缀(即https://myFunctionApp.azurewebsites.net/api/x/y/{z}/get),缺少前缀导致资源找不到。
正确配置步骤
1. 调整API基础路径
在APIM中创建或编辑对应Function App的API时,将基础路径设为/(空路径),而非默认的Function App名称myFunctionApp。这样APIM的端点就会以https://my-apim-name.azure-api.net/为根,匹配你期望的路径格式。
2. 配置正确的重写规则
针对/x/y/{z}/get操作,修改rewrite-uri模板,补上Function App要求的/api前缀:
<rewrite-uri template="/api/x/y/{z}/get" />
如果需要批量处理多个路由,可通过动态变量自动捕获请求路径,避免逐个配置:
<rewrite-uri template="/api/{request-url-path}" />
该配置会自动将APIM接收的路径加上/api前缀,转发到Function App对应路径。
3. 验证Function App路由配置
确认Function App的host.json中routePrefix为默认的api(若自定义过前缀,需同步调整重写规则中的前缀),示例配置:
{ "extensions": { "http": { "routePrefix": "api" } } }
额外注意事项
- 映射多个Function App到同一APIM域名时,需为每个App创建独立API,通过不同的基础路径或操作路径区分,避免路由冲突。
- 配置完成后,可通过APIM测试控制台发送请求,检查转发的URL是否正确指向Function App的完整路径,排查路径拼接问题。
内容的提问来源于stack exchange,提问作者EnenDaveyBoy
相关产品推荐
相关产品推荐

