Swagger, NswagStudio, c #, Required = Newtonsoft.Json.Required.DisallowNull, как обращаться - PullRequest
0 голосов
/ 12 февраля 2019

Учитывая: 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 не возвращал объект с нулевыми значениями, какие свойства рынка требуются.

...