如何使用swagger代码生成带有自定义Datetime注释的模型

时间:2019-03-29 17:22:10

标签: php annotations swagger swagger-codegen

我们要求使用以下注释来注释日期时间字段:

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

有人可以建议如何使用摇摇欲坠的代码生成来实现此目标。代码库是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;

昂首阔步的代码生成了什么

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

1 个答案:

答案 0 :(得分:0)

Swagger Codegen使用Moustache模板生成代码。例如,您的示例中的PHP注释在以下模板中定义:

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

您可以修改这些模板以自定义输出。


将上面的模板下载到您的计算机上,并根据需要更改日期时间注释。然后使用-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文件夹中找不到的模板将默认为标准模板。