【问题标题】:Unexpected parameters definition using Swashbuckle使用 Swashbuckle 定义意外参数
【发布时间】:2020-11-15 11:51:29
【问题描述】:

我有这样的控制器

[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; }
}

Swagger 的 DateTimeRange 配置如下:

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"),
});                        

                                                          

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

【问题讨论】:

    标签: c# .net asp.net-core swagger swashbuckle


    【解决方案1】:

    如果您将字段/属性标记为internalprotectedprivate,它将被swagger 文档中的swashbuckle 自动忽略:

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

    结果:

    【讨论】:

    • 对不起,我的问题可能没有形成。我不希望 Swagger 期望我为一个类提供所有属性。我想在查询中提供一个字符串,如2020-11-15T00:42:13+00:00,2020-11-16T00:42:13+00:00(有两个由逗号分隔的日期)。我实现了 ASP.NET 绑定器,用于将其从字符串解析到 DateTimeRange 类。
    • 你可以看到我更新的答案,看看它是否对你有帮助。
    • 这样我绑定不成功,你看看有没有办法绑定成功。
    • 我去看看。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多