如何在Swagger中显示查询参数的C#验证属性

时间:2018-06-29 04:30:01

标签: swagger asp.net-core-webapi

我将Swagger与ASP.Net Core 2.1 Web API项目结合使用。这是控制器动作方法的示例:

[HttpGet]
public string GetString([Required, MaxLength(20)] string name) =>
    $"Hi there, {name}.";

这是Swagger文档中提供的内容。如您所见,Swagger显示Required属性,但不显示MaxLength属性:

enter image description here

如果我在DTO类上使用RequiredMaxLength属性,这些属性是POST操作方法的参数,则Swagger会同时显示它们:

enter image description here

如何让Swagger显示查询参数的MaxLength(及其他)验证属性?

注意:我试图将string name参数替换为具有一个名为name的字符串属性的类-Swagger生成的文档完全相同。

1 个答案:

答案 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;
}