#工作中有时候需要与安卓端或前端对接接口,为了避免接口更新不及时,学习一下Swagger!
一.maven依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
二.Swagger配置类
import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
}
若是简易项目,即可通过 http://127.0.0.1:8101/swagger-ui/index.html 访问界面,8101为项目的server.port.
遇到的问题:访问Swagger ui 出现弹窗。
解决方法:项目中使用了Spring Sercurity. 对Swagger的四个接口放行即可。
/swagger-ui.html /webjars/** /v3/** /swagger-resources/**
放行接口中 /v3/** 可能为 v2 ,或 v3。按自己情况而定。
否则可能出现以下情况
最终界面,已经可以看到接口,后续再优化。
根据项目环境不同, 只在开发环境和测试环境开放Swagger
通过Swagger访问项目接口,解决Token鉴权问题。
private List<springfox.documentation.service.SecurityScheme> securitySchemes(){
List<springfox.documentation.service.SecurityScheme> apiKeyList = new ArrayList<>();
apiKeyList.add(new ApiKey("Authorization","Authorization","Bearer"));
return apiKeyList;
}
private SecurityContext securityContext(){
return SecurityContext.builder()
.securityReferences(Collections.singletonList(new SecurityReference("Authorization",scopes())))
.build();
}
/**
* 这里是写允许认证的scope
*/
private AuthorizationScope[] scopes() {
return new AuthorizationScope[]{
new AuthorizationScope("web", "All scope is trusted!")
};
}
点击后,即可在其中填写自己的Token,随后即可访问需要鉴权的接口