如何在springfox中用String替换joda.DateTime?

时间:2015-10-30 15:21:16

标签: jodatime swagger springfox

我试图使用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字段,但它仍然无法正常工作。
<登记/> 你能帮我弄清楚我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

我设法让这个工作。
似乎首先我必须应用Docket.ignoredParameterTypes(DateTime.class),以便swagger框架不会为此类生成任何文档,然后应用Docket.directModelSubstitute(DateTime.class, String.class)实际替换该类。 现在我的模型架构是:

"dataAsOf": "string"