在一个简单而裸露的春季靴子项目中,我有一个模型类,其类型为java.time.LocalTime
。
如果我运行项目,springfox会将LocalTime
检测为非内置类,并将其放在definitions
下。
{
"ExampleDto": {
"type": "object",
"properties": {
"time": {
"$ref": "#/definitions/LocalTime"
}
}
}
}
不是我想要的。
...具有一个类型为string的属性,其自定义格式为“ time”,如下所示:
{
"ExampleDto": {
"type": "object",
"properties": {
"time": {
"type": "string",
"format": "time"
}
}
}
}
如果我将AlternateTypeRule
中的LocalTime
添加到String
,我只会得到我想要的一半。
{
"ExampleDto": {
"type": "object",
"properties": {
"time": {
"type": "string"
}
}
}
}
当然,我也尝试了很多事情,但是我从未设法设置属性的“格式”。
我发现以某种方式调用构造函数io.swagger.models.properties.StringProperty#StringProperty(java.lang.String)
并以“时间”作为参数可以解决问题,但是我无法找到实现方法。
我在github上建立了一个项目来展示我的问题。 https://github.com/LorenzSchumann/springfoxshowcase
答案 0 :(得分:0)
刚刚在Springfox documentation中找到了一个建议:
问:问。我们如何轻松使用Java 8类型。 LocalDateTime?配置日期的最简单方法是通过
RUN apk add --update --no-cache g++ gcc libxml2-dev libxslt-dev python-dev libffi-dev openssl-dev make RUN pip install -r requirements.txt
。如果这些是符合字符串格式的ISO 8601日期,即yyyy-MM-dd'T'HH:mm'Z'。但是,您将没有任何格式或验证信息。将“ Date”和“ DateTime”类型正确映射到其对应的摇动类型的方法:
- 用java.sql.Date代替“日期”类型(java.util.LocalDate,org.joda.time.LocalDate)。
- 用java.util.Date代替“ DateTime”类型(java.util.ZonedDateTime,org.joda.time.LocalDateTime……)。
示例:
Docket#directModelSubstitute(LocalDateTime.class, String.class)
在您的情况下,它将是:
docket
.directModelSubstitute(LocalDate.class, java.sql.Date.class)
.directModelSubstitute(LocalDateTime.class, java.util.Date.class)
之后的输出将是:
docket.directModelSubstitute(LocalTime.class, java.util.Date.class)