Springfox неправильно генерирует документы Swagger для одной и той же конечной точки операции, разные параметры запроса

Springfox неправильно генерирует документ swagger для простого случая, подобного этому:

GET /api/departments - Gets all department

GET /api/departments?name=IT - Gets a department with name passed as query parameter

Это контроллер Spring:

@ApiOperation(value = "Gets all departments", notes = "", tags = {"departments"})
@RequestMapping(value="/departments", produces=MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
public List<Department> getAllDepartments(){
       ...
}

@ApiOperation(value = "Gets a department by name", notes = "", tags = {"departments"})
@RequestMapping(value="/departments", params="name", produces=MediaType.APPLICATION_JSON_VALUE, method=RequestMethod.GET)
public Department getDepartmentByName(@RequestParam String name){
    ...
}

Сгенерированный файл swagger содержит только запись GET /api/departments, а не след записи с фильтром запроса.

Любое обходное решение?

Конфигурация Swagger:

@Bean
public Docket departmentsV1Api() {
    return new Docket(DocumentationType.SWAGGER_2)
        .select()
        .apis(RequestHandlerSelectors.any())
        .paths(PathSelectors.regex("/.*"))                
        .build()
        .apiInfo(new ApiInfo("Departments Rest API","","v1","","","",""))
        .pathMapping("/api")
        .securitySchemes(newArrayList(apiKey()))
        .securityContexts(newArrayList(securityContext()))
        .groupName("departmentsV1");
}

person codependent    schedule 16.11.2015    source источник


Ответы (1)


Этот вариант использования не поддерживается спецификацией. Однако вы можете использовать метод enableUrlTemplating(true) в своем docket, чтобы включить поддержку rfc6570.

Существует также экспериментальная библиотека (springfox-swagger-ui-rfc6570), который можно использовать в качестве замены стандартному springfox-swagger-ui.

Примечание. Имейте в виду, что это находится в стадии инкубации и может измениться, когда поддержка будет добавлена ​​в спецификацию.

person Dilip Krishnan    schedule 25.11.2015