2016-05-27 4 views
1

Ich habe Swashbuckle und Swagger UI implementiert, um meine API-Dokumentation zu tun.Datum Zeit null Modellschema Anzeige swashbuckle + swagger UI

Ich habe ein Problem mit der Anzeige eines Nullable DateTime, oder irgendein Nullable-Objekt für diese Angelegenheit.

Derzeit wird im Antwortmodellschema DateTime als "date": "2016-05-27T00:15:41.658Z" als Nullwert angezeigt.

Das Antwortmodell zeigt das Datum als date (string, optional) an, in dem angegeben ist, dass es optional ist. Es wird jedoch auch für ein nicht nullbares DateTime angezeigt.

Ich habe versucht, den Standardwert hinzuzufügen: Default model example in Swashbuckle (Swagger) und auch versucht, ein Modellschema Beispiel über die letzte Antwort hinzuzufügen.

Irgendwelche Ideen, wie ich "date": "null" im Modellschema anzeigen lassen kann? Oder alternativ einen besseren Weg finden, der Person, die die Dokumentation liest, einen Hinweis zu geben, dass das Objekt date null sein kann?

Antwort

1

Die kurze Antwort

Sie können nicht und Sie sollten nicht länger

Die leicht beantworten

Grundsätzlich ist die Dokumentation, date (string, optional), ist bereits Ihre Verbraucher zu sagen, dass die Die Eigenschaft kann in einer Anfrage oder Antwort null sein oder fehlen. Ein Beispiel mit "date": null ist nicht sehr hilfreich. Die Bereitstellung eines Beispiels mit einem gültigen Datum ist jedoch hilfreich: Es gibt dem Verbraucher eine Vorstellung davon, wie das Datum aussieht.

Jetzt, auf die DateTime und DateTime? Eigenschaften Server-Seite. Wenn der Server ein Objekt mit einem fehlenden Datum empfängt, bestimmt der Typ der Eigenschaft den Wert. Wenn eine Eigenschaft mit dem Typ DateTime fehlt, wird ASP.Net Web API diese Eigenschaft auf das minimale Datum (01-01-0001Z00: 00: 00) festlegen. Wenn jedoch eine Eigenschaft mit dem Typ DateTime? fehlt, wird die ASP.Net-Web-API diese Eigenschaft auf null setzen.

Das gleiche gilt für die Antwort vom Server gesendet. Wenn der Server ein Objekt mit einer Eigenschaft des Typs DateTime sendet, wird immer ein Wert gesendet. Wenn jedoch eine Eigenschaft mit dem Typ DateTime? gesendet wird, hat die Eigenschaft sent nur einen Wert, wenn `HasValue 'der Eigenschaft wahr ist. Andernfalls hat die Antwort nicht die Eigenschaft.

+0

Danke, stimmte zu, dass "date": null' nicht sehr hilfreich ist. Die Verwirrung tritt auf, wenn "DateTime" -Objekte in der API auch als "date (string, optional)" angezeigt werden. Scheint nicht richtig für mich, da dies nicht optional ist. Also was Sie sagen, ist, dass sie jede Eigenschaft null überprüfen müssen? Das ist eine enorme Menge an Gemeinkosten ... – Colin

+1

Wenn Sie ausdrücken möchten, dass eine Datumseigenschaft immer einen Wert hat, können Sie das Attribut '[Erforderlich]' verwenden. In diesem Fall wird die Eigenschaft als "date (string)" dokumentiert. – venerik

+0

Danke @venerik. Das ist gut für ausgehende DTOs, aber eingehende Objekte. Wir wenden unsere eigene Validierung auf alle Eigenschaften an, so dass wir '[Required]' nicht hinzufügen können. – Colin

Verwandte Themen