2015-03-30 36 views
6

Spring MVC (Spring Boot aracılığıyla) kullanıyorum ve swagger-spring-mvc kütüphanesini kullanarak Swagger API belgelerini entegre ettim.@ApiModelProperty verinin nasıl kullanılacağı Swagger belgeleri için StringType

Ben şuna benzer bir sınıf var:

@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; 
    } 
    ... 
} 

Ben, diğer bir deyişle, JSON listPrice.toString döndürüyor bu alan için ToStringSerializer kullanıyorum beri:

{ 
    "listPrice": "USD 10.50" 
} 

Ancak, hızlı bir şekilde dökümantasyonu dataType = "java.lang.String" 'i onurlandırmıyor. Sanki tepki modelini gösterir: Tarlada yanı sıra yöntemine @ApiModelProperty ek açıklama koyarak denedim

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

ve her iki durumda da required alan saygı duyulur, ancak dataType alan yok sayılır. Ayrıca dataType için "String", "string" ve "java.lang.String" kullanmayı denedim, ancak bunların hiçbiri işe yaramadı.

Bir şey mi özlüyorum, yoksa bu sadece swagger-spring-mvc kitaplığındaki bir hata mı?

cevap

4

Bu, Swagger Spring MVC kitaplığının geçerli sürümünde dataType'un tamamen yok sayılmadığını ortaya çıkarır. Burada üzerinde kısa bir tartışma bulundu: o dışarı kez 2. sürümünde dahil edilebilir gibi

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

görünüyor.

DÜZENLEME: Sürüm 2, veri türünü desteklediğini söylese de, şu anda çalışıyor gibi görünmüyor. Benim ihtiyaçları için daha iyi bir yaklaşım, böyle bir direkt modeli ikamesi ile dokümantasyon ayarlar yapılandırılır: Bazı uyarılar ile

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

Sen şimdi 2.0.x içinde (2.0.0-SNAPSHOT mevcuttur) desteklenen bu doğru, . Veri tipinin geçerli bir paket nitelikli sınıf olması gerekir. –

+0

Teşekkürler @DilipKrishnan. Github ile ilgili belgelerin de değişikliği yansıtacak şekilde güncellendiğini görüyorum. – nerdherd

İlgili konular