java集成swagger 详解java怎样集成swagger组件
guxiaohai_ 人气:0想了解详解java怎样集成swagger组件的相关内容吗,guxiaohai_在本文为您仔细讲解java集成swagger的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:java集成swagger步骤,java集成swagger,下面大家一起来学习吧。
一:简介
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。
二:集成swagger
1.引入pom.xml文件包(导入4个jar包)
注意:jdk1.8以上才能运行swagger2
<!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </dependency> <!--swagger-ui--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.8.0</version> </dependency> <!--swagger-ui增强--> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.4</version> </dependency> <!--swagger-xml bind--> <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency>
2.要想使用Swagger,必须编写一个配置类来配置 Swagger,这里的配置类如下
@Configuration @EnableSwagger2 public class SwaggerConfig { private String title = "标题.."; private String description = ""; private String termsOfServiceUrl = ""; private String version = "版本号.."; @Bean public Docket createDefaultRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()) .build().groupName("default").securitySchemes(securitySchemes()).securityContexts(securityContexts()); } @Bean public Docket createTestRestApi() { return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select() .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)) .paths(PathSelectors.ant("/test/**")).build().groupName("测试/调试").securitySchemes(securitySchemes()) .securityContexts(securityContexts()); } private ApiInfo apiInfo() { return new ApiInfoBuilder().title(title).description(description).termsOfServiceUrl(termsOfServiceUrl) .version(version).build(); } private List<SecurityReference> defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; return newArrayList(new SecurityReference("token", authorizationScopes)); } private List<SecurityContext> securityContexts() { return newArrayList(SecurityContext.builder().securityReferences(defaultAuth()) .forPaths(PathSelectors.regex("^(?!auth).*$")).build()); } private List<ApiKey> securitySchemes() { return newArrayList(new ApiKey("token", "token", "header")); } }
3.集成RESTful风格接口示例
@Api(tags = "测试") @RestController public class TestController { @ApiOperation("get方法") @GetMapping("getInfo") public void getInfo(){ } }
4.控制台打印路径地址(可选配置)
@Slf4j @SpringBootApplication public class SpringbootApplication implements ApplicationRunner { public static void main(String[] args) { SpringApplication.run(SpringbootApplication.class, args); } @Autowired Environment environment; @Override public void run(ApplicationArguments args) throws Exception { log.info("项目已启动,端口:" + environment.getProperty("local.server.port")); log.info("swagger文档地址:http://localhost:" + environment.getProperty("local.server.port") + "/swagger-ui.html"); log.info("swagger文档地址:http://localhost:" + environment.getProperty("local.server.port") + "/doc.html"); } }
二:配置运用swagger
1.http://ip:port/swagger-ui.html
http://ip:port/doc.html
加载全部内容