繁体   English   中英

Azure function with Swashbuckle,无法在日期类型的 API swagger 模式中获取 $(date)

[英]Azure function with Swashbuckle, unable to get $(date) in API swagger schema for date type

我将 SwashBuckle 与 Azure function (do.net 6) 一起使用

[实体类]

   public DateOnly startDate { get; set; }

Swagger 在 API 模式中显示日期如下:

startDate   dateOnly{
year    integer($int32)
month   integer($int32)
day integer($int32)
dayOfWeek   integer($int32)
default: 0
Enum:
Array [ 7 ]
dayOfYear   integer($int32)
dayNumber   integer($int32)
}

预期的:

startDate string($date)

需要一些帮助,

我们可以通过继承 IsoDateTimeConverter class 并使用 API 约定来自定义日期来实现这一点。

自定义日期格式

样本日期格式

 public  class myclass: IsoDateTimeConverter
        {
            public myCustomFormat(string format)
            {
                DateTimeFormat = format;
            }
        }
    public class DateConverter : JsonConverter<DateTime>
        {
            public override void WriteJson(JsonWriter writer, DateTime value, JsonSerializer serializer)
            {
                writer.WriteValue(value.ToString("YYYY-mm-dd"));
            }

            public override DateTime ReadJson(JsonReader rdr, Type objectType, DateTime myValue, bool hasValue, JsonSerializer serializer)
            {
                return DateTime.ParseExact(rdr.Value.ToString(), "YYYY-mm-dd", CultureInfo.InvariantCulture);
            }
        }

并避免使用 JSON 序列化程序更改日期格式时出错。

var myDate = new DateTime(2023, 23, 1, 30, 0, 0, DateTimeKind.Local);

var myDate = new DateTime(2023, 23, 1, 30, 0, 0, DateTimeKind.Unspecified);

参考资料取自

API 公约

日期格式-rfc3339 - 感谢 Klyne 的博客

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM