복붙노트

[SPRING] 자신감 문서에 대한 문자열에 @ApiModelProperty 데이터 유형을 설정하는 방법

SPRING

자신감 문서에 대한 문자열에 @ApiModelProperty 데이터 유형을 설정하는 방법

나는 (봄 부팅을 통해) 스프링 MVC를 사용하고와 자신감 - 스프링 MVC 라이브러리를 사용하여 자신감 API 문서를 통합했다.

내가 이렇게 보이는 클래스가 :

@ApiModel
public class CartItem {
    ...
    private Money listPrice; // joda money class

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(required = true, dataType = "java.lang.String")
    public Money getListPrice() {
        return listPrice;
    }
    ...
}

내가이 분야에 대한 ToStringSerializer을 사용하고 있기 때문에, 즉, JSON에 listPrice.toString을 반환하는 것 :

{
    "listPrice": "USD 10.50"
}

그러나, 자신감 문서는 dataType와 = "java.lang.String의"를 존중하지 않습니다. 그것은 응답 모델로 보여줍니다 :

"CartItem": {
    "description": "",
    "id": "CartItem",
    "properties": {
        "listPrice": {
            "required": false,
            "type": "Money"
        }
    }
}

나는 분야뿐만 아니라 방법에 @ApiModelProperty 주석을 퍼팅 시도했고, 두 경우 모두에 필요한 필드는 존경하지만, 데이터 형 필드는 무시됩니다. 또한, "문자열을" "문자열"을 사용하여 시도 및 데이터 유형에 대한 데이터 "java.lang.String의"그러나 그 아무도 일하지 않은했다.

나는 자신감 - 스프링 MVC 라이브러리에서이 단지 버그가 뭔가를 누락 또는 건가요?

해결법

  1. ==============================

    1.데이터 형식을 완전히 자신감 스프링 MVC 라이브러리의 현재 버전에서 무시되는 것으로 나타났다. 난 여기에 짧은 토론을 발견 :

    데이터 형식을 완전히 자신감 스프링 MVC 라이브러리의 현재 버전에서 무시되는 것으로 나타났다. 난 여기에 짧은 토론을 발견 :

    https://github.com/springfox/springfox/issues/602

    즉 밖으로 일단은 버전 2에 포함될 수있는 것 같습니다.

    편집 : 버전 2는 데이터 유형을 지원합니다라고하지만,이 시간에 작동하는 표시되지 않습니다. 내 요구를위한 더 나은 방법은 다음과 같이 직접 모델 교체와 함께 문서 설정을 구성하는 것입니다 :

    @Bean
    public Docket swaggerSpringMvcPlugin() {
        return new Docket(DocumentationType.SWAGGER_2)
                .directModelSubstitute(Money.class, String.class);
    }
    
  2. ==============================

    2.

    @ApiModel
    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    public class Model {
        @JsonDeserialize(using = LocalDateTimeDeserializer.class)
        @JsonSerialize(using = LocalDateTimeSerializer.class)
        @JsonProperty("myDate")
        @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
        private final LocalDateTime myDateTime;
    
    }
    
  3. from https://stackoverflow.com/questions/29355872/how-to-set-apimodelproperty-datatype-to-string-for-swagger-documentation by cc-by-sa and MIT license