我将Swagger与ASP.Net Core 2.1 Web API项目结合使用。这是控制器动作方法的示例:
[HttpGet]
public string GetString([Required, MaxLength(20)] string name) =>
$"Hi there, {name}.";
这是Swagger文档中提供的内容。如您所见,Swagger显示Required
属性,但不显示MaxLength
属性:
如果我在DTO类上使用Required
和MaxLength
属性,这些属性是POST操作方法的参数,则Swagger会同时显示它们:
如何让Swagger显示查询参数的MaxLength
(及其他)验证属性?
注意:我试图将string name
参数替换为具有一个名为name
的字符串属性的类-Swagger生成的文档完全相同。
答案 0 :(得分:0)
在Dotnet核心中,可以使用ShowCommonExtensions = true
,并按给定顺序(顶部是ConfigObject)。
public static IApplicationBuilder UseR6SwaggerDocumentationUI(
this IApplicationBuilder app)
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
//Allow to add addition attribute info on doc. like [MaxLength(50)]
c.ConfigObject = new ConfigObject
{
ShowCommonExtensions = true
};
c.SwaggerEndpoint("/swagger/v1/swagger.json", "Asptricks.net API");
c.RoutePrefix = "api_documentation/index";
c.InjectStylesheet("/swagger-ui/custom.css");
c.InjectJavascript("/swagger-ui/custom.js");
c.SupportedSubmitMethods( new[] { SubmitMethod.Patch });
//Collapse model near example.
c.DefaultModelExpandDepth(0);
//Remove separate model definition.
c.DefaultModelsExpandDepth(-1);
});
return app;
}