0

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");
}
4

1 に答える 1

3

この使用例は仕様でサポートされていません。ただし、このenableUrlTemplating(true)メソッドを使用してdocketrfc6570 サポートを有効にすることができます。

標準のドロップイン代替として使用できる実験的なライブラリ ( springfox-swagger-ui-rfc6570springfox-swagger-ui ) もあります。

注:これはインキュベーション段階であり、仕様にサポートが追加されると変更される可能性があることに注意してください。

于 2015-11-25T16:36:59.107 に答える