33

I am using Springfox libraries to generate documentation for REST service and display it in Swagger UI. I followed the directions in Springfox documentation.

I have one controller, which uses parameters from query string and the method is mapped as following:

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

The resulting mapper in swagger-ui then displayed as:

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

Parameters are displayed correctly in the UI: enter image description here

But when I click on Try it Out, the request URL is misformed:

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

How can it be fixed?

nsprenkle
  • 191
  • 11
jny
  • 8,007
  • 3
  • 37
  • 56

1 Answers1

36

This was caused by the line

 enableUrlTemplating(true)

in Docket configuration which I copied from example and forgot to remove.

After removing this line everything is working as expected.

jny
  • 8,007
  • 3
  • 37
  • 56
  • 1
    thanks for the answer! what does enableUrlTemplating do anyway? – code Feb 02 '16 at 00:05
  • 1
    Decides whether to use url templating for paths. This is especially useful when you have search api's that might have multiple request mappings for each search use case. This is an incubating feature that may not continue to be supported after the swagger specification is modified to accomodate the usecase as described in issue #711 – Diego D Sep 01 '16 at 18:09