gpt4 book ai didi

azure - 导入api有重复的签名操作azure web api

转载 作者:行者123 更新时间:2023-12-02 05:58:26 26 4
gpt4 key购买 nike

我正在尝试将我的 swagger 架构导入到 azure APIM,但它一直给我重复签名错误。

Importing API has duplicate signature operations: 2 operations with signature 'GET /api/v1/brokers/{brokerid}'; 2 operations with signature 'GET /api/v1/marketreport/{brokerid}'; 2 operations with signature 'GET /api/v1/offices/{officeid}'; 2 operations with signature 'GET /api/v1/teams/{teamid}'`

我已经仔细检查了我的 API 路由和 swagger 架构,但看不到任何重复项。此架构更新在 2018 年 5 月 11 日 azure api 更新之前运行良好。

我已阅读 release notes但找不到任何东西。我的端点如下所示。

    [Route("{officeId:int:min(1)}", Name = "GetOfficeById")]
public IHttpActionResult GetOfficeById(int officeId, [FromUri] IncludeImageModel includeImage)

[Route("{brokerId:int:min(1)}", Name = "GetBrokerById")]
public IHttpActionResult GetBrokerById(int brokerId, [FromUri] IncludeImageModel includeImage)

[Route("{teamId:int:min(1)}", Name = "GetTeamById")]
public IHttpActionResult GetTeamById(int teamId, [FromUri] IncludeImageModel includeImage)

[Route("MarketReport/{brokerId:int}", Name = "GetMarketReportsByBrokerId")]
public IHttpActionResult GetMarketReportsByBrokerId(int brokerId, [FromUri]CBBainApi.Models.Common common)

最佳答案

我通过阅读 Path template validation changes 解决了这个问题部分来自Release notes 。正如它所说的“改进重复数据删除逻辑”,他们在检查唯一性之前添加了规范化步骤:

如果路径模板包含查询字符串,则 ? 之后的所有段用 & 分隔字符按字母顺序排序,不区分大小写(对 = 字符没有任何特殊处理)。

这意味着如果您有两个如下所示的端点

    [RoutePrefix("brokers")]
public class BrokerController : ApiController

[HttpGet]
[Route("{brokerId:int:min(1)}", Name = "GetBrokerById")]
public IHttpActionResult GetBrokerById(int brokerId, [FromUri] IncludeImageModel includeImage)

[HttpGet]
[Route("{webUrl}", Name = "GetBrokerByWebUrl")]
public IHttpActionResult GetBrokerByWebUrl(string webUrl, [FromUri] IncludeImageModel includeImage)

此 APIM 将通过将它们转换为以下内容来检查唯一性:

"brokers/{brokerId:int:min(1)}""brokers/{0}""brokers/{webUrl}""brokers/{0}"

并且会给出重复签名错误。

两个端点都在移动应用程序中使用,因此我无法更改路线,因此我将两个端点合并到

    [HttpGet]
[Route("{param}", Name = "GetBroker")]
public IHttpActionResult GetBroker(string param, [FromUri] IncludeImageModel includeImage)
{
int brokerId = default(int);
if (int.TryParse(param, out brokerId))
... do something
else
...do something else
//return something;
}

关于azure - 导入api有重复的签名操作azure web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50460753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com