C# сгенерированный клиент из swagger не работает из-за даты реализации - PullRequest
3 голосов
/ 07 апреля 2020

У меня есть определение чванства, которое уже завершено, поэтому я не могу изменять атрибуты или предлагать изменения. Этот файл подмены имеет различные определения даты, например:

fromDate:
 description: |
   - en - fromDate.....
 type: string
  format: date

В java клиентах это генерируется как атрибут Date . В C# отсутствует базовая c реализация Date , а просто DateTime , которая принимается как сгенерированный тип данных. Это то же самое для всех 4 способов, которые я пробовал при создании клиента:

Swagger Editor with C# Client generation
Swagger Editor with C# #2 Client generation  (RestSharp 2)
Open API generator with C# Client generation
Open API generator with C# #2 Client generation (RestSharp 2)

Я ожидал бы, что шаблон сериализации, такой как yyyy-mm-dd, будет создан в клиенте c#, чтобы соответствовать тип даты, но это не так. Даты всегда сериализуются как полные строки даты / времени / часового пояса. Это не работает для серверного приложения.

Официальная документация говорит

строковая дата Как определено полной датой - RFC3339

RFC339 полная дата говорит

 full-date = date-fullyear "-" date-month "-" date-mday

Как и ожидалось, мой клиент выдает неверные выходные данные (например, 2020-12-31T23: 59: 60Z ) и падает, когда он анализирует входящие данные в классе клиента API (cra sh происходит до того, как я смогу обработать ввод).

Когда я изменяю сваггер на строковый тип с шаблоном, как это предлагалось в других публикациях, он работает, но это не так, как должно быть, я должен использовать предопределенный файл чванства.

Как я могу создать клиентов или добавить специальный шаблон, который автоматически вызывается клиентом?

Cheers

...