2015-03-30 2 views
6

Używam Spring MVC (przez Spring Boot) i mam zintegrowaną dokumentację API Swagger przy użyciu biblioteki swagger-spring-mvc.Jak ustawić @ApiModelProperty dataType na ciąg do dokumentacji Swagger

Mam klasy, który wygląda mniej więcej tak:

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

Ponieważ używam ToStringSerializer na tym polu, to powrót listPrice.toString w JSON, innymi słowy:

{ 
    "listPrice": "USD 10.50" 
} 

Jednak dokumentacja przechwytu nie honoruje parametru dataType = "java.lang.String". To pokazuje model odpowiedzi jak:

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

Próbowałem umieszczenie adnotacji @ApiModelProperty na boisku, jak i sposobu, w obu przypadkach pole required jest przestrzegane, ale pole dataType jest ignorowany. Próbowałem również używać "String", "string" i "java.lang.String" dla dataType, ale żaden z nich nie zadziałał.

Czy brakuje mi czegoś, czy to tylko błąd w bibliotece swagger-spring-mvc?

Odpowiedz

4

Okazuje się, że dataType jest całkowicie ignorowane w bieżącej wersji biblioteki MVC Swagger Spring. Znalazłem krótką dyskusję o tym tutaj:

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

Wygląda na to może być zawarte w wersji 2 raz, że jest na zewnątrz.

EDYCJA: Chociaż wersja 2 mówi, że obsługuje typ danych, nie wydaje się działać w tym momencie. Lepszym rozwiązaniem dla moich potrzeb jest skonfigurowanie ustawień dokumentacji z bezpośrednim modelu substytucji tak:

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

Masz rację, że to teraz obsługiwane w 2.0.x (dostępny w 2.0.0-SNAPSHOT), z pewnymi zastrzeżeniami . Typ danych musi być prawidłową klasą kwalifikowaną pakietu. –

+0

Dzięki @DilipKrishnan. Widzę, że dokumentacja na github została zaktualizowana, aby odzwierciedlić również zmianę. – nerdherd