Как создать модель с пользовательской аннотацией Datetime, используя swagger codegen - PullRequest
1 голос
/ 29 марта 2019

У нас есть требование аннотировать поле даты и времени следующей аннотацией:

@Type("DateTime<'Y-m-d\TH:i:sP'>")

Может кто-нибудь посоветовать, как этого добиться, используя swagger code gen.Кодовая база - это PHP.Текущее определение поля выглядит следующим образом:

created:
        type: "string"
        format: "date-time"
        description: "Date client details first appeared in the system."         
        default: null

Требуемый вывод:

/**
     * Date client details first appeared in the system.
     *
     * @var \DateTime|null
     * @SerializedName("createdDate")
     * @Assert\DateTime()
     * @Type("DateTime<'Y-m-d\TH:i:sP'>")
     */
    protected $createdDate;

Что генерируется кодексом Swagger:

 /**
     * Date client details first appeared in the system.
     *
     * @var \DateTime|null
     * @SerializedName("createdDate")
     * @Assert\DateTime()
     * @Type("DateTime")
     */
    protected $createdDate;

1 Ответ

0 голосов
/ 29 марта 2019

Swagger Codegen использует шаблоны Усов для генерации кода. Например, аннотации PHP из вашего примера определены в этом шаблоне:

https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/main/resources/php-symfony/model_variables.mustache

Вы можете изменить эти шаблоны для настройки вывода.


Загрузите шаблон выше на свой компьютер и при необходимости измените аннотации даты и времени. Затем запустите codegen, используя аргумент -t, чтобы указать путь к вашим пользовательским шаблонам:

java -jar swagger-codegen-cli-2.4.4.jar generate
  -i http://petstore.swagger.io/v2/swagger.json
  -l php-symfony
  -o petstore_php_server
  -t path/to/MyTemplates    <------

Любые пользовательские шаблоны, найденные в папке -t, будут использоваться вместо соответствующих стандартных шаблонов. Шаблоны, не найденные в папке -t, по умолчанию соответствуют стандартным шаблонам.

...