[英]How to explicitly define API Controllers Path for Swagger documentation in Asp.Net Core MVC Project
[英]ASP.NET Core Web API - How to specify required fields in Swagger Documentation
在 ASP.NET Core-6 Web API 中,我正在實現 Swagger 文檔。
我有這個代碼。
SwaggerDoc 選項:
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。
我如何實現這一目標?
謝謝
將[Required]屬性添加到類的屬性中:
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; }
}
並且不要忘記將[Produces("application/json")]屬性添加到 API 控制器。 其目的是聲明控制器的動作支持 application/json 的響應內容類型:
[ApiController]
[Route("api/[controller]")]
[Produces("application/json")]
public class TodoController : ControllerBase
{
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.