Azure devops Azure管道门-调用Rest API错误-所有请求都需要API版本查询参数(?API版本=)

Azure devops Azure管道门-调用Rest API错误-所有请求都需要API版本查询参数(?API版本=),azure-devops,azure-pipelines,azure-api-management,Azure Devops,Azure Pipelines,Azure Api Management,我有一个azure管道正在部署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 Re

我有一个azure管道正在部署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中,但总是出现相同的错误。 即使看起来我正在传递它想要的值

有人用过这种方法吗?版本控制参数是如何工作的

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


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

GEThttps://management.azure.com/https://apim-myapi.azure api.net/api/Vehicle/Makes?年份=2017?api版本=2020-09-01.12.0

这是一个电话还是两个电话?因为在我看来,你提出了两个请求,却收到了两个错误

第一个是
https://management.azure.com
这是地址。对于此调用,当您像这样调用它时,您将得到
MissingApiVersionParameter
错误,因为它要求您指定
api version
参数

另一方面,您也在调用API
https://apim-myapi.azure-api.net/api/Vehicle/Makes?year=2017?api-version=2020-09-01.12.0
(根据您的描述,这就是您想要做的),您将获得
表达式“eq(root['status'],'successful')”的计算失败。
这显然是api策略的错误


api版本
参数与api调用无关。所以删除
https://management.azure.com
api版本
,只需调用
https://apim-myapi.azure-api.net/api/Vehicle/Makes?year=2017
(对API的请求应该是这样的)然后关注
表达式失败
错误。

我使用的是Azure资源管理器连接类型,这就是API URL不正确的原因。
我将其更改为通用端点,并在URL后缀和参数中添加了“/api/Vehicle/Makes?year=2017”。该调用现在成功。

看起来您已将api版本添加到api中。也许可以通过(内联)powershell请求您的api?请在postman中运行此api以查看是否会出现400错误。错误400可能是api url本身的问题。我可以从azure中的测试门户调用api fine。它不需要API版本。只有当我在大门的任务中召唤它的时候。我也可以在azure外部调用它,这不是必需的。我不确定调用的第一部分来自哪里。我在上面添加了用于浇口的设置。也许URL后缀和参数需要更改?好的,我修复了调用。它现在返回一个有效的响应。我创建了一个通用端点,而不仅仅是调用APIM。现在我在返回值评估方面遇到了问题,但我会在另一个问题中问这个问题