ASP.NET核心Web API-如何在Swagger文档中指定所需字段



在ASP中。NET核心-6 Web API,我正在实现Swagger文档。

我有这个代码。

SwaggerDocOptions:

public class SwaggerDocOptions
{
public string Title { get; set; }
public string Description { get; set; }
public string Organization { get; set; }
public string Email { get; set; }
}

程序.cs

builder.Services.AddSwaggerGen();
builder.Services.AddOptions<SwaggerGenOptions>()
.Configure<IApiVersionDescriptionProvider>((swagger, service) =>
{
foreach (ApiVersionDescription description in service.ApiVersionDescriptions)
{
swagger.SwaggerDoc(description.GroupName, new OpenApiInfo
{
Title = swaggerDocOptions.Title,
Version = description.ApiVersion.ToString(),
Description = swaggerDocOptions.Description,
TermsOfService = new Uri("mysite.org/LICENSE.md"),
Contact = new OpenApiContact
{
Name = swaggerDocOptions.Organization,
Email = swaggerDocOptions.Email
},
License = new OpenApiLicense
{
Name = "MIT",
Url = new Uri("mysite.org/MyApp")
}
});
}
var security = new Dictionary<string, IEnumerable<string>>
{
{"Bearer", new string[0]}
};
swagger.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
{
Description = "JWT Authorization header using the Bearer scheme.",
Name = "Authorization",
In = ParameterLocation.Header,
Type = SecuritySchemeType.ApiKey,
Scheme = "Bearer",
BearerFormat = "JWT"
});
swagger.OperationFilter<AuthorizeCheckOperationFilter>();
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
swagger.IncludeXmlComments(xmlPath);
});
// Register and Configure API versioning
builder.Services.AddApiVersioning(options =>
{
options.AssumeDefaultVersionWhenUnspecified = true;
options.DefaultApiVersion = new ApiVersion(1, 0);
options.ReportApiVersions = true;
});
// Register and configure API versioning explorer
builder.Services.AddVersionedApiExplorer(options =>
{
options.GroupNameFormat = "'v'VVV";
options.SubstituteApiVersionInUrl = true;
});

// Configure the HTTP request pipeline.
app.UseSwagger();
app.UseSwaggerUI();

我希望在Swagger文档中指定所需的字段。也就是说,

https://localhost:44361/swagger.index.html

但是,当我启动应用程序时,中没有指定所需的字段

https://localhost:44361/swagger.index.html.

如何实现这一点?

感谢

[必需]属性添加到类的属性:

public class SwaggerDocOptions
{
[Required]
public string Title { get; set; }
public string Description { get; set; }
[Required]
public string Organization { get; set; }
public string Email { get; set; }
}

并且不要忘记将[Produuces("application/json"(]属性添加到API控制器。其目的是声明控制器的操作支持application/json:的响应内容类型

[ApiController]
[Route("api/[controller]")]
[Produces("application/json")]
public class TodoController : ControllerBase
{

最新更新