首页 > 解决方案 > 生成 Swagger/Autorest API 客户端时出现语义冲突

问题描述

我已经按照这篇文章使用 autorest 生成 API 客户端库:

如何为您的 REST API 自动生成客户端

我首先在 VS2019 中执行了这个命令:

iwr http://localhost:5000/swagger/v1/swagger.json -o ./docs/openapi/api-v1.json

这很好用。可以看到生成成功的json文件。然后我执行了这个 autorest 命令:

autorest --input-file=./docs/openapi/api-v1.json --v3 --csharp --use-datetimeoffset=true --sync-methods=none --output-folder=./src/SampleApi.Client --namespace=SampleApi.Client

发生了一堆错误,它们都是同一类型:

node.exe:错误:语义冲突:路径“/Schools/Details/{SchoolKey}”中引用的路径参数“SchoolKey”需要在路径或操作级别的每个操作中定义。(“帖子”中缺失)(路径 > /Schools/Details/{SchoolKey})

我不确定这个错误是什么意思以及如何解决它?这是我的功能:

    [HttpPost]
    [Authorize(Policy = Policies.User)]
    [Route("{SchoolKey}")]
    public async Task<ApiResponse> Details(string schoolKey)
    {
       ...
    }

我的控制器是这样的:

[ApiController]
[Route("[controller]/[action]")]
public class SchoolsController

API 的终点是“/Schools/Details/12345”

那么我需要改变我的功能/控制器以使自动休息工作吗?

谢谢!

标签: c#apiswaggerautorest

解决方案


推荐阅读