【问题标题】:Asp.NET Core - Web Api - OpenApi Client method namesAsp.NET Core - Web Api - OpenApi 客户端方法名称
【发布时间】:2021-08-20 16:34:17
【问题描述】:

我正在我的 API 中生成我的 Swagger/OpenAPI 描述符:

services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo
                {
                    Title = "AthCoin API",
                    Version = "v1",
                    Description = "Ath coin interop service.",
                    Contact = new OpenApiContact
                    {
                        Name = "Ricerca e Sviluppo",
                        Email = "xx@my.it",
                        Url = new Uri("https://athena.srl/"),
                    },
                });
                
            });

...在我的客户端应用程序(来自 Visual Studio)中,我正在自动生成添加“连接服务”的客户端。

在我的 API 客户端上,每个 API 方法仅使用操作名称进行映射:

  • UserController.Create() -> 映射为 SwaggerClient.Create()

  • ProductController.Create() -> 被映射到广告 SwaggerCient.Create2()

这没有用。有没有办法更改自动生成的客户端,在生成的方法名称中添加控制器的名称?

例如:

  • UserController.Create() -> 映射为 SwaggerClient.UserCreate()
  • ProductController.Create() -> 被映射到广告 SwaggerCient.ProductCreate()

【问题讨论】:

    标签: asp.net-core openapi swagger-codegen


    【解决方案1】:

    将 nuget 包 Swashbuckle.AspNetCore.Annotations 添加到您的 API 项目中,并使用 SwaggerOperationAttributeOperationId 参数标记您的控制器操作,如下所示:

    [SwaggerOperation(OperationId = "UserCreate")]
    public async Task<IActionResult> Create()
    {
        //whatever
        return Ok();
    }
    

    这将在 swagger JSON 中生成 "operationId": "UserCreate",进而在您生成的客户端中生成所需的 UserCreate 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-30
      相关资源
      最近更新 更多