Учитывая: API, на которые я имею ограниченное влияние в плане изменений, построено на чистом ядре 2.2.Стандарт NetCore Swagger используется.В некоторых классах DTO есть поля, помеченные [System.ComponentModel.DataAnnotations.Required]
Но по некоторым причинам (которые также обсуждаются) некоторые методы возвращают объекты этих классов с нулевыми значениями в этих полях.Аннотация привела к
"required": [
"given", - this field for example
"family",
"email",
"postCode"
],
"type": "object",
...
в спецификации swagger, которая затем приводит к
[Newtonsoft.Json.JsonProperty("given", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
в сгенерированном коде на c # (я использую nswag studio и клиент c # с довольно стандартными настройками).И затем, когда я пытаюсь получить список таких объектов из API, используя сгенерированный клиент C #, если некоторые из таких свойств имеют значение NULL, он явно выдает исключение десертризации newtonsoft.так как мы можем справиться с этим?Я подумал о решениях как на стороне клиента, так и на стороне сервера:
1) на сервере мы можем настроить, чтобы не показывать информацию о том, что необходимо для спецификации swagger.
2) на клиенте, мы можем настроить поведениеперевод этого блока Required в Required = Newtonsoft.Json.Required.Default
3) забудьте обо всем этом и настаивайте на том, чтобы api не возвращал объект с нулевыми значениями, какие свойства рынка требуются.