2015-10-27 10 views
15

Sto utilizzando le librerie Springfox per generare documentazione per il servizio REST e visualizzarlo nell'interfaccia utente di Swagger. Ho seguito le indicazioni in Springfox documentation.Utilizzo del metodo annotato @RequestParam con ui swagger

devo un controller che utilizza parametri di stringa di query e il metodo è mappato come segue:

@ApiOperation(value = "") 
@RequestMapping(method = GET, value = "/customcollection/{id}/data") 
public Iterable<CustomeType> getData(@ApiParam(value = "The identifier of the time series.") 
    @PathVariable String id, 
    @ApiParam(name = "startDate", value = "start date", defaultValue = "") 
    @RequestParam("startDate") String startDate, 
    @ApiParam(name = "endDate", value = "end date", defaultValue = "") 
    @RequestParam("endDate") String endDate) 

Il mappatore conseguente swagger-ui poi visualizzata come:

GET /customcollection/{id}/data{?startDate,endDate} 

parametri sono visualizzato correttamente nell'interfaccia utente: enter image description here

Ma quando clicco su provarlo, l'URL della richiesta è deformati:

http://localhost:8080/customcollection/1/data {? StartDate, endDate}? StartDate = 1 & endDate = 2

Come può essere fisso?

risposta

18

Ciò è stato causato dalla linea

enableUrlTemplating(true) 

in configurazione Docket che ho copiato dall'esempio e dimenticato di rimuovere.

Dopo aver rimosso questa riga, tutto funziona come previsto.

+1

grazie per la risposta! cosa fa comunque enableUrlTemplating? – codeshark

+1

Decide se utilizzare i modelli di URL per i percorsi. Ciò è particolarmente utile quando si dispone di API di ricerca che potrebbero avere più mapping di richieste per ogni caso di utilizzo di ricerca. Questa è una funzione di incubazione che potrebbe non continuare a essere supportata dopo che la specifica swagger è stata modificata per adattarsi all'usecase come descritto nel numero 711 –

Problemi correlati