【发布时间】:2021-12-22 06:07:20
【问题描述】:
我在 .NET CORE 6 中制作了一个 WebAPI。
我有一个这样的控制器类:
[ApiController]
[Route("{culture:culture}/[controller]")]
[SwaggerDefaultValue("culture", "en-US")]
[Produces("application/json")]
public class AccountsController : BaseController
{
...
}
如您所见,我在路由中定义了一个参数,例如 {culture:culture}。
我想在我的 Swagger 中为这个参数设置一个默认值。
我这样定义了一个属性类:
[AttributeUsage(AttributeTargets.Class )]
public class SwaggerDefaultValueAttribute:Attribute
{
public string Name { get; set; }
public string Value { get; set; }
public SwaggerDefaultValueAttribute(string name, string value)
{
Name = name;
Value = value;
}
}
还有一个像这样的过滤器类:
public class SwaggerDefaultValueFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
// needs some code
}
}
并将过滤器也添加到我的 Swagger 服务中。
options.OperationFilter<SwaggerDefaultValueFilter>();
但是,问题在于我发现的大多数代码示例都与旧版本的 Swagger 相关,并且它们的大多数方法已被弃用(例如 this one)。
问题是,如何修改这个 SwaggerDefaultValueFilter 类以在我的路径参数中显示默认值:
仅供参考: 我正在使用<PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.2.3" />。
我也找到了这个sample,但是,它没有设置路径参数的默认值,它似乎适用于模型属性。
【问题讨论】:
标签: c# asp.net-core swagger