我试图使用springfox(版本2.0.2)记录我的spring(版本3.2.6)应用程序。
我的模型类有一个org.joda.time.DateTime字段。
当它在响应模型模式中呈现时,它看起来像这样:
"dataAsOf": {
"afterNow": true,
"beforeNow": true,
"centuryOfEra": 0,
"chronology": {
"zone": {
"fixed": true
}
},
"dayOfMonth": 0,
"dayOfWeek": 0,
"dayOfYear": 0,
"equalNow": true,
"era": 0,
"hourOfDay": 0,
"millis": 0,
"millisOfDay": 0,
"millisOfSecond": 0,
"minuteOfDay": 0,
"minuteOfHour": 0,
"monthOfYear": 0,
"secondOfDay": 0,
"secondOfMinute": 0,
"weekOfWeekyear": 0,
"weekyear": 0,
"year": 0,
"yearOfCentury": 0,
"yearOfEra": 0,
"zone": {
"fixed": true
}
} 我真的想摆脱我的领域那些无用的细节。到目前为止,我已经在我的招摇配置课程中尝试了这个:
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket restfulApi() {
String deploymentEnvironment = EnvironmentUtils.getDeployedEnvironment();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.enable(isSwaggerEnabled(deploymentEnvironment))
.apiInfo(getApiInfo())
.directModelSubstitute(DateTime.class, String.class);
docket = new ApiSelectorBuilder(docket)
.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.build();
return docket;
}
public ApiInfo getApiInfo() {
ApiInfo apiInfo = new ApiInfo("API", "RESTful description", "1.0", "terms of service", "email@email.com", "Licence Type", "License URL");
return apiInfo;
}
public boolean isSwaggerEnabled(String deploymentEnvironment) {
return deploymentEnvironment.equalsIgnoreCase("local") ? true : false;
}
}
所以我使用Docket的directModelSubstitute方法用String类替换DateTime类,但没有成功。 dateAsOf字段仍然显示所有额外信息
我还尝试在我的getter上使用@ApiOperation(dateType =" java.lang.String")来获取dataAsOf字段,但它仍然无法正常工作。
<登记/>
你能帮我弄清楚我错过了什么吗?
答案 0 :(得分:2)
我设法让这个工作。
似乎首先我必须应用Docket.ignoredParameterTypes(DateTime.class)
,以便swagger框架不会为此类生成任何文档,然后应用Docket.directModelSubstitute(DateTime.class, String.class)
实际替换该类。
现在我的模型架构是:
"dataAsOf": "string"