Springfox は、次のような単純なケースでは、swagger doc を正しく生成しません。
GET /api/departments - Gets all department
GET /api/departments?name=IT - Gets a department with name passed as query parameter
これはスプリング コントローラです。
@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");
}