目录
添加header请求头信息
import java.util.ArrayList;
import java.util.List;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.swagger.annotations.ApiOperation;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* swagger配置类
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig{
@Bean
public Docket createRestApi() {
//开始----在配置好的配置类中增加此段代码即可
ParameterBuilder ticketPar = new ParameterBuilder();
List<Parameter> pars = new ArrayList<Parameter>();
ticketPar.name("swagger").description("登录校验")//name表示名称,description表示描述
.modelRef(new ModelRef("string")).parameterType("header")
.required(false).defaultValue("swagger").build();//required表示是否必填,defaultvalue表示默认值
pars.add(ticketPar.build());//添加完此处一定要把下边的带***的也加上否则不生效
//结束----在配置好的配置类中增加此段代码即可
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) //这里采用包含注解的方式来确定要显示的接口
//.apis(RequestHandlerSelectors.basePackage("com.stylefeng.guns.modular.system.controller")) //这里采用包扫描的方式来确定要显示的接口
.paths(PathSelectors.any())
.build()
.globalOperationParameters(pars);//----把消息头添加
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Doc")
.description("Api文档")
.termsOfServiceUrl("")
.version("1.0")
.build();
}
}
参考:https://blog.youkuaiyun.com/QiaoRui_/article/details/80439815
设置全局token
@Configuration
@EnableWebMvc
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket platformApi() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).forCodeGeneration(true)
.select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
.apis(RequestHandlerSelectors.any())
.paths(regex("^.*(?<!error)$"))
.build()
.securitySchemes(securitySchemes())
.securityContexts(securityContexts());
}
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeyList= new ArrayList();
apiKeyList.add(new ApiKey("x-auth-token", "x-auth-token", "header"));
return apiKeyList;
}
private List<SecurityContext> securityContexts() {
List<SecurityContext> securityContexts=new ArrayList<>();
securityContexts.add(
SecurityContext.builder()
.securityReferences(defaultAuth())
.forPaths(PathSelectors.regex("^(?!auth).*$"))
.build());
return securityContexts;
}
List<SecurityReference> defaultAuth() {
AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences=new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
return securityReferences;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("starmark-API").description("©2018 Copyright. Powered By starmark.")
// .termsOfServiceUrl("")
.contact(new Contact("Starmark", "", "947618@163.com")).license("Apache License Version 2.0")
.licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE").version("2.0").build();
}
}
关键是在securitySchemes()方法配置里增加需要token的配置。
配置完成后,swagger-ui.html里右上角会有一个Authorize的按钮,录入该token即能成功调用相关接口。
参考:https://blog.youkuaiyun.com/zhangdaiscott/article/details/98491716
文件上传注解
单个文件
@ApiOperation(value = "上传文件",notes = "上传文件")
@ApiImplicitParams({
@ApiImplicitParam(name = "path",value = "上传路径,",paramType = "query",required = true,dataType = "string")
})
@PostMapping(value = "/uplode", headers = "content-type=multipart/form-data")
public ResponseJsonCode uplode(@RequestParam(value = "path", required = true) String path,
@RequestParam(value = "file", required = true) MultipartFile file) {
}
多个文件
@ApiOperation(value = "文件上传",notes = "文件上传")
@ApiImplicitParams({
@ApiImplicitParam(name = "files",value = "多个文件,",paramType = "formData",allowMultiple=true,required = true,dataType = "file"),
@ApiImplicitParam(name = "path",value = "上传路径,",paramType = "query",required = true,dataType = "string")
})
@PostMapping(value = "/uplode", headers = "content-type=multipart/form-data")
public ResponseJsonCode uplode(@RequestParam(value = "path", required = true) String path,
@RequestParam(value = "files", required = true) MultipartFile[] files) {
}
参考:
https://blog.youkuaiyun.com/persistencegoing/article/details/87892640
https://blog.youkuaiyun.com/h363659487/article/details/83862061