我正在使用 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”)
如果您正在使用 Swashbuckle,您可以通过提供
CustomSchemaIds
来自定义它:
services.AddSwaggerGen(options =>
{
// ...
options.CustomSchemaIds(type => "your convention here");
}
例如,您可以检查标志
type.IsGenericType
并决定返回什么。