首页 > 解决方案 > Azure 管道门 - 调用 Rest API 错误 - 所有请求都需要 api-version 查询参数 (?api-version=)

问题描述

我有一个正在部署 API 的天蓝色管道。部署后,我有一个门将调用 API 并在部署到下一个环境之前检查成功状态。问题是每次运行此门时都会出现此错误:

2021-05-27T19:42:30.3298765Z GET https://management.azure.com/https://apim-myapi.azure-api.net/api/Vehicle/Makes?year=2017?api-version=2020-09-01.12.0
                Response Code: 0
                Response: An error was encountered while processing request. Exception: {"error":{"code":"MissingApiVersionParameter","message":"The api-version query parameter (?api-version=) is required for all requests."}}
Exception Message: The remote server returned an error: (400) Bad Request. (type WebException)
                Evaluation of expression 'eq(root['status'], 'successful')' failed.
                
Exception Message: Error parsing API response into a JSON object. (type DistributedTaskException)

我尝试向我正在使用的 URL 添加不同的版本,但我总是遇到同样的错误。即使看起来我正在传递它想要的价值!

有人用过这个门法吗?版本控制参数如何工作?

更新:添加我正在使用的门设置:

在此处输入图像描述

标签: azure-devopsazure-pipelinesazure-api-management

解决方案


我不明白为什么您的请求看起来像这样:

GET https://management.azure.com/https://apim-myapi.azure-api.net/api/Vehicle/Makes?year=2017?api-version=2020-09-01.12.0

这是一个电话还是两个电话?因为在我看来,您正在发出两个请求并收到两个错误。

所以第一个https://management.azure.comAPIM REST API地址。对于这个调用,当你这样调用它时,你会得到MissingApiVersionParameter错误,因为它需要你指定api-version参数。

另一方面,您也在调用您的 API https://apim-myapi.azure-api.net/api/Vehicle/Makes?year=2017?api-version=2020-09-01.12.0(根据您的描述是您想要做的)并且您得到 Evaluation of expression 'eq(root['status'], 'successful')' failed.的显然是来自 api 策略的错误。

api-version参数与您的 API 调用无关。因此,从您的调用中删除https://management.azure.comapi-version调用https://apim-myapi.azure-api.net/api/Vehicle/Makes?year=2017(这就是对 API 的请求应该是这样的)并专注于expression failed错误。


推荐阅读