Date Time null模型架构显示swashbuckle + swagger ui

时间:2016-05-27 00:43:09

标签: c# datetime null swashbuckle

我已经实现了Swashbuckle和Swagger UI来完成我的API文档。

我遇到了正确显示可为空的DateTime或任何可以为空的对象的问题。

目前可以为空的DateTime在响应模型架构中显示为"date": "2016-05-27T00:15:41.658Z"

响应模型将日期显示为date (string, optional),表明它是可选的,但它也会显示不可为空的DateTime

我尝试通过Default model example in Swashbuckle (Swagger)添加默认值,并尝试通过最后一个答案添加模型架构示例。

关于如何在模型架构中显示"date": "null"的任何想法?或者或者找一种更好的方法来让阅读文档的人知道date对象可以为空?

1 个答案:

答案 0 :(得分:1)

简短回答

你不能,你不应该

稍长的回答

基本上,所提供的文档WaitForXxx已经告诉您的消费者,请求或响应中的属性可以为null或缺失。因此,提供date (string, optional)的示例并非常有帮助。但是,提供一个有效日期的示例很有帮助:它让消费者知道日期是什么样的。

现在,转到"date": nullDateTime属性服务器端。当服务器收到缺少日期的对象时,属性的类型确定该值。当缺少类型为DateTime?的属性时,ASP.Net Web API会将该属性设置为最小日期(01-01-0001Z00:00:00)。但是,当缺少类型为DateTime的属性时,ASP.Net Web API会将该属性设置为null。

服务器发送的响应也是如此。当服务器发送具有类型DateTime?属性的对象时,它将始终发送一个值。但是,当发送类型为DateTime的属性时,发送的属性只有在`HasValue'属性是真的。否则,回复不会拥有该财产。