web-dev-qa-db-fra.com

Utilisation de la méthode annotée @RequestParam avec l'interface utilisateur swagger

J'utilise des bibliothèques Springfox pour générer de la documentation pour REST et l'afficher dans Swagger UI. J'ai suivi les instructions dans documentation Springfox .

J'ai un contrôleur, qui utilise les paramètres de la chaîne de requête et la méthode est mappée comme suit:

@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)

Le mappeur résultant dans swagger-ui s'affiche alors sous la forme:

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

Les paramètres s'affichent correctement dans l'interface utilisateur: enter image description here

Mais lorsque je clique sur Try it Out, l'URL de la demande est incorrecte:

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

Comment peut-il être corrigé?

22
jny

Cela a été causé par la ligne

 enableUrlTemplating(true)

dans la configuration Docket que j'ai copiée à partir de l'exemple et oublié de supprimer.

Après avoir supprimé cette ligne, tout fonctionne comme prévu.

27
jny