java swagger组件集成

Posted guxiaohai_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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>
  1. 要想使用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"));
    }
}
  1. 集成RESTful风格接口示例
@Api(tags = "测试")
@RestController
public class TestController {

    @ApiOperation("get方法")
    @GetMapping("getInfo")
    public void getInfo(){
       
    }
}
  1. 控制台打印路径地址(可选配置
@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
    在这里插入图片描述
  2. http://ip:port/doc.html
    在这里插入图片描述

以上是关于java swagger组件集成的主要内容,如果未能解决你的问题,请参考以下文章

如何将Swagger no config设置与Jersey 2集成

Spring集成Swagger,Java自动生成Api文档

Spring集成Swagger,Java自动生成Api文档

Java web项目集成Swagger报AbstractSerializableParameter类的异常问题

我爱java系列之---springboot项目集成swagger2

Swagger集成