Swagger - 时间戳怪异的表示 [英] Swagger - timestamp weird representation
问题描述
我有 Spring Boot 控制器,为了方便 API 参考,我使用了 Swagger.关于时间戳
的问题.为什么在生成的文档示例中如下所示:
<代码>时间戳":{日期":0,天":0,小时":0,分钟":0,月":0,纳米":0,秒":0,时间":0,时区偏移":0,年":0}
那么为什么 swagger 有这么奇怪的时间戳示例,而不仅仅是简单的数值,哪个标准描述了这种表示?
查看 Swagger 的开放规范 (
.directModelSubstitute(Timestamp.class, Long.class)
负责时间戳类型和数值类型的映射
I have Spring Boot controller and for easy API reference used Swagger.
Question about timestamp
. Why in generated documentation example looks like:
"timestamp": {
"date": 0,
"day": 0,
"hours": 0,
"minutes": 0,
"month": 0,
"nanos": 0,
"seconds": 0,
"time": 0,
"timezoneOffset": 0,
"year": 0
}
So why swagger have so strange example for timestamp no just simple numeric value, which standard describes this representation?
check open specification of Swagger (https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md).
If you want to solve the issue, try this sample spring boot application
import java.io.IOException;
import java.sql.Timestamp;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication
@RestController
@EnableSwagger2
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@RequestMapping(value = "/api", method = RequestMethod.POST)
public Demo messages(HttpServletRequest request, HttpServletResponse response) throws IOException {
java.util.Date date = new java.util.Date();
return new Demo(new Timestamp(date.getTime()));
}
@Bean
public Docket docket() {
return new Docket(DocumentationType.SWAGGER_2).select()
.apis(RequestHandlerSelectors.basePackage(getClass().getPackage().getName())).paths(PathSelectors.any())
.build().apiInfo(generateApiInfo()).directModelSubstitute(Timestamp.class, Long.class);
}
private ApiInfo generateApiInfo() {
return new ApiInfo("demo", "demo.", "Version 1.0", "urn:tos", "test", "Apache 2.0",
"http://www.apache.org/licenses/LICENSE-2.0");
}
}
Demo Object
import java.sql.Timestamp;
public class Demo {
private Timestamp time;
public Timestamp getTime() {
return time;
}
public void setTime(Timestamp time) {
this.time = time;
}
public Demo(Timestamp time) {
super();
this.time = time;
}
public Demo() {
super();
}
}
check below image or open http://localhost:8080/swagger-ui.html
.directModelSubstitute(Timestamp.class, Long.class)
is responsible of mapping between timestamp type and numeric type
这篇关于Swagger - 时间戳怪异的表示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!