使用 Swashbuckle 定义意外参数

Unexpected parameters definition using Swashbuckle

我有这样的控制器

[HttpGet]
public Task<IActionResult> GetCsvAudit([FromQuery] ReportDto request)
{
    return Task.FromResult<IActionResult>(Ok());
}

public class ReportDto
{
    public DateTimeRange ActionDateRange { get; set; }
    public PhiResourceType OrderBy { get; set; }
    public string PhiResourceTypeIdentifier { get; set; }
}

DateTimeRange 为 Swagger 配置如下:

c.MapType<DateTimeRange>(() => new OpenApiSchema()                                       
{                                                                                        
    Description = "Date range",                                                          
    Type = "string",                                                                     
    Title = "Date range",                                                                
    Example = new OpenApiString("2020-11-15T00:42:13+00:00 - 2020-11-16T00:42:13+00:00"),
});                        

                                                          

问题是当我使用 [FromQuery] 属性时,Swagger 仍然希望我在查询中提供每个 DateTimeRange 属性,而我希望它期望我提供字符串 2020-11-15T00:42:13+00:00,2020-11-16T00:42:13+00:00为了它。

如果您将 field/property 标记为 internalprotectedprivate,它会被 swagger 文档中的 swashbuckle 自动忽略:

 public class DateTimeRange
{
    
    internal string Start { get; set; }

   
    internal string End { get; set; }
}

结果: