我的项目中有很多带有这种注释的控制器
@ApiOperation(value = "description")
@RequestMapping(value = "/{param1}", method = RequestMethod.POST)
public @ResponseBody Response<Map<String, Object>> someMethod(
@ApiParam(name = "param1", value = "about param1", required = true)
@PathVariable("param1") int param1,
@ApiParam(name = "param2", value = "about param2", required = false, defaultValue = "default)
@RequestParam(value = "param2", defaultValue = "default") String param2
){
// ..
}
几乎每个方法都接受像access_token
这样的常见参数。如果我们将描述添加到所有方法,那将是不好的解决方案。也许有其他解决方案?
我发现我可以使用像https://github.com/OAI/OpenAPI-Specification/blob/master/fixtures/v2.0/json/resources/reusableParameters.json这样的配置定义json
文件,但据我所知,我可以使用json或注释。或者也许我可以以某种方式将它们结合起来?
答案 0 :(得分:4)
如果有人会搜索此类内容。 我发现下一个解决方案在项目中,我们配置像这样的招摇
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build()
.globalOperationParameters(commonParameters())
.apiInfo(apiInfo());
}
private ApiInfo apiInfo() {
ApiInfo apiInfo = new ApiInfo(/* params here */);
return apiInfo;
}
private List<Parameter> commonParameters(){
List<Parameter> parameters = new ArrayList<Parameter>();
parameters.add(new ParameterBuilder()
.name("access_token")
.description("token for authorization")
.modelRef(new ModelRef("string"))
.parameterType("query")
.required(false)
.build());
return parameters;
}
}
您应该调用globalOperationParameters
方法并传递全局参数列表(我使用commonParameters
方法创建)。
我在http://springfox.github.io/springfox/docs/current/
找到的解决方案多数人。