我在将 API 操作与二头肌文件中的后端集成时遇到问题。 这是代码片段:
resource MobileApiOperationGetHeartbeatPolicy 'Microsoft.ApiManagement/service/apis/operations/policies@2020-12-01' = {
name: 'policy'
parent: MobileApiOperationGetHeartbeat
properties: {
value: '<policies><inbound><base/><set-backend-service base-url="@(backend.properties.url)" /></inbound><backend><base/></backend><outbound><base/></outbound><on-error><base/></on-error></policies>'
format: 'rawxml'
}
}
我不断收到此错误:
{"code":"ValidationError","message":"一个或多个字段包含不正确的值:","details":[{"code":"ValidationError","target":"set-backend-service" ,"message":"第 1 行第 28 列元素“set-backend-service”中出现错误:名称“backend”在当前上下文中不存在”}]}
APIM 后端(称为:backend)已在同一文件中(成功)创建。
我尝试使用 backend-id,我尝试通过变量传递它,总是得到相同的错误。
如果我用硬编码值替换 base-url 的值,它就可以工作。但我需要通过后端传递它,因为我打算稍后切换后端,而不需要更改所有操作(可能有数百个操作)。至少,需要通过变量传递它。
我感觉这可能是一些格式问题,但我不知道如何让它工作。
设置后端服务的策略的工作方式不同。
有两个选项可以使用
<set-backend-service />
:
您可以设置 URL:
<set-backend-service base-url="http://contoso.com/api/8.2/" />
或者你通过ID设置后端:
<set-backend-service backend-id="contoso-api" />
Microsoft Learn:Azure / API 管理 / 设置后端服务:
https://learn.microsoft.com/en-us/azure/api-management/set-backend-service-policy