1.首先一个一般类型的springboot项目,含有controller接口暴露(requestmapping)
类似这种形式
以下为目录格式
配置步骤
1.在目录里建个swaggerConfig,是否创建新的文件夹没有硬性要求。
2.给上面加上这两条注解
接下来基本上就可以直接用了
如果要自定义一些属性,或者是加token配置的话(swagger相对于postman需要去手动配置插入header的token元素)
自定义属性的话可以自行修改docket属性,
//Docket:摘要对象,通过对象配置描述文件的信息。
@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());
}
//apiInfo:设置描述文件中 info。参数类型 ApiInfo
//此部分对应swagger最上面的那部分
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("").description("")
// .termsOfServiceUrl("")
.contact(new Contact("111", "222", "333")).license("Apache License Version 2.0")
.licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE").version("2.0").build();
}
/**
这里对应swagger一进来的部分,可以按自己需要的改
需要配置token的话,则需要额外添加auth配置
//配置对应字段(这里的X-User-Token可以根据需要进行修改,有的公司里的token不直接叫token)
private List<ApiKey> securitySchemes() {
List<ApiKey> apiKeyList= new ArrayList();
apiKeyList.add(new ApiKey("X-User-Token", "X-User-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("globalToken", "accessEverything");
AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
authorizationScopes[0] = authorizationScope;
List<SecurityReference> securityReferences=new ArrayList<>();
securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
return securityReferences;
}
配置正常的话这里就会显示权限图标
排查错误(如果有的话)
由于很多人是直接把别人的swaggerConfig拿过来直接用的,所以很容易因为配置与自身环境不兼容产生错误
1.进去swagger结果一个接口都没有?如果Docket配置中含有apis(RequestHandlerSelectors.basePackage(“xxx.xxx”)),如果配置路径错误会导致一个接口都出不来,解决方法是将这个路径对应到项目的controller层(暴露接口的一层),或者是,直接删掉这一条。
2. 访问404?如果是从他人那里拿来的swaggerConfig,而且把因没加maven依赖的报错的包都加到了maven里配置好,项目目前已经不报错了,但是访问swagger还是404.
此时就应该检查一下是否忘记了最重要的swaggerUI的依赖包,导入后重启项目即可。
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
3.项目访问还是404?检查项目的application.properties/application.yml中是否有
这种配置的话需要在访问url里加上
就可以正常访问了