引言
在自动生成的api文档中,我需要提供存在请求头中的token,所以就需要swagger去自动生成
@ApiImplicitParam
swagger提供的注解, 手动配置,就在controller某个接口方法上,类似@ApiOperation的位置,上下都可以
@GetMapping("page")
@ApiOperation(value = "分页搜索")
@ApiImplicitParam(name = "Authorization", value = "Authorization",required = true, dataType = "String",paramType="header")
public Result getPage(long current) {
return null;
}
@RequestHeader
spring提供的注解,类似@RequestParam, 加在请求参数中, 也是可以直接帮你套进来,这个参数还可以拿来用
@GetMapping("page")
@ApiOperation(value = "分页搜索")
public Result getPage(@RequestParam("current") long current,@RequestHeader("userId") long userId) {
return service.getPage(current,userId);
全局配置
修改swaggerConfig
/**
* <p>
* swagger配置类
* </p>
*
* @author:雷子杰
* @date:2022/10/28
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.enable(true)
.apiInfo(apiInfo())
.select()
//需要显示接口文档的包
.apis(RequestHandlerSelectors.basePackage("com.lzj"))
.paths(PathSelectors.any())
.build()
.globalOperationParameters(this.getParameterList());
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("my博客系统API文档")
.description("爱学习的大雄")
// .termsOfServiceUrl("http://localhost:8502/")
.version("1.0")
.build();
}
/**
* 添加head参数配置
*/
private List<Parameter> getParameterList() {
ParameterBuilder clientIdTicket = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
clientIdTicket.name(JwtTokenUtils.TOKEN_HEADER).description("token令牌")
.modelRef(new ModelRef("string"))
.parameterType("header")
.required(false).build(); //设置false,表示clientId参数 非必填,可传可不传!
pars.add(clientIdTicket.build());
return pars;
}
}