2015-03-03 16 views
5

Sto cercando di utilizzare Swagger per documentare la mia API REST. A seguito di questa example, ho annotare l'endpoint REST in questo modo:Swagger Tipo di dati Modello in ImplicitParam con Play Framework

case class CreateItemRequest(title: String, body: String) 

@ApiOperation(value = "Create a new item", httpMethod = "POST", response = classOf[Item]) 
@ApiImplicitParams(Array(new ApiImplicitParam(dataType = "CreateItemRequest", paramType = "body", name = "body", required = true, allowMultiple = false, value = "The item object to create"))) 
def create(
      @ApiParam(value = "Hash of the user", required = true) 
      @QueryParam("userhash") userhash: String 
     ) 

E mi aspettavo di ottenere "Modello" come this ma ottengo solo il "CreateItemRequest" String come tipo di dati. Non le proprietà della classe case CreateItemRequest.

Saluti, Daniel

+0

Hai trovato una soluzione a questo? Sto affrontando lo stesso problema: \ – Sudh

risposta

0

cercare di annotare i vostri modelli con le annotazioni spavalderia pure, come illustrato di seguito:

https://github.com/swagger-api/swagger-core/blob/master/samples/scala-play2/app/models/Pet.scala

vostra annotazione ApiModel (name = "CreateItemRequest") abbinare l'annotazione @ApiImplicitParam (dataType = "CreateItemRequest")

Cheers, Johannes

+1

L'ho già provato, ma sfortunatamente non funziona :( –

+1

Hai trovato una soluzione a questo? Ho lo stesso problema –

0

Provare a utilizzare questa annotazione @JsonAutoDetect e @JsonIgnoreProperties(ignoreUnknown = true) prima della classe e quindi aggiungere @JsonPropety per ogni proprietà che si desidera mostrare.

Assicurarsi che nella definizione del percorso si chiama il proprio metodo come:

GET url controllers.foo.YourMethod(param: type) 

Altro esempio here.

Spero che questo ti possa aiutare.

9

È necessario utilizzare lo spazio dei nomi completo nell'attributo dataType. Ad esempio: @ApiImplicitParam(dataType = "org.test.CreateItemRequest")

+1

Ha risolto il mio problema. – chabeee