如何从 Swagger for ASP.NET Core 中的泛型类型名称中删除引号和数字?

问题描述 投票:0回答:1

我正在使用 ASP.NET Core 和 ("openapi": "3.0.1") 开发一个 API 来生成文档。但是,当使用泛型类型时,Swagger 会生成带有引号和数字的架构名称,例如:ApiResponse`1[AlarmItem[]]。

这是我的通用类型的简化版本:

public class ApiResponse<T>
{
    public T Data { get; set; }
}

public class AlarmItem
{
    public string Name { get; set; }
}

我希望 Swagger 能够更清楚地显示模式名称,而不需要波浪号和数字,例如 ApiResponse[AlarmItem[]]。对我来说,需要保持与以前版本相同的风格(“swagger”:“2.0”)

.net asp.net-mvc asp.net-core swagger openapi
1个回答
0
投票

如果您正在使用 Swashbuckle,您可以通过提供

CustomSchemaIds
来自定义它:

services.AddSwaggerGen(options =>
{
  // ...
  options.CustomSchemaIds(type => "your convention here");
}

例如,您可以检查标志

type.IsGenericType
并决定返回什么。

© www.soinside.com 2019 - 2024. All rights reserved.