在ASP.Net Core Swagger中,可以使用SwaggerGenOptions
类的DefaultIgnoreAttributeFilter
属性来忽略默认参数值。下面是一个代码示例:
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
c.DefaultIgnoreAttributeFilter();
// 可选步骤:忽略特定的默认参数值
//c.OperationFilter();
});
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
}
// 可选步骤:自定义操作过滤器以忽略特定的默认参数值
public class IgnoreDefaultValueOperationFilter : IOperationFilter
{
public void Apply(OpenApiOperation operation, OperationFilterContext context)
{
foreach (var parameter in operation.Parameters)
{
var parameterInfo = context.ApiDescription.ParameterDescriptions.FirstOrDefault(p => p.Name == parameter.Name);
if (parameterInfo != null && parameterInfo.DefaultValue != null)
{
parameter.Default = OpenApiAnyFactory.CreateFor(parameter.Schema, parameterInfo.DefaultValue);
}
}
}
}
上述代码中,DefaultIgnoreAttributeFilter
方法用于忽略所有默认参数值,如果你只想忽略特定的默认参数值,可以使用IgnoreDefaultValueOperationFilter
自定义操作过滤器,并在ConfigureServices
方法中注册该过滤器。
注意:DefaultIgnoreAttributeFilter
方法是在Swashbuckle.AspNetCore版本5.0.0及以上可用的。如果你使用的是旧版本,请查阅相应的文档或升级到最新版本。
上一篇:ASP.NET Core Swagger错误:“获取错误,内部服务器错误”
下一篇:Asp.net Core System.InvalidOperationException: '处理LINQ表达式时出现异常'