Java Swagger技术使用指南

 更新时间:2021年09月30日 14:48:04   作者:四季人06  
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步

Swagger的作用与概念

Swagger官网,点此进入
在前后端分离时代,我们需要实时自动更新接口信息,和测试接口,实现前后端分离式开发,swagger因此产生

在项目中使用swagger

以下以3.0.0依赖为例

 <!--swagger 相关组件-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>3.0.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>3.0.0</version>
        </dependency>
          <dependency>
           <groupId>io.springfox</groupId>
           <artifactId>springfox-boot-starter</artifactId>
           <version>3.0.0</version>
        </dependency>
@RestController
public class HelloController {

    @RequestMapping(value = "/hello")
    public String hello(){
         return "hello";
    }
}
@Configuration
@EnableSwagger2 //开启swagger2
public class SwaggerConfig {

}

然后访问http://localhost:8080/swagger-ui/index.html
你就能看到如下界面,为swagger文档

在这里插入图片描述

配置swagger

先来看看底层的代码,了解一下

在这里插入图片描述

在这里插入图片描述

ApiInfo 配置

@Configuration
@EnableSwagger2 //开启swagger2
public class SwaggerConfig {

    @Bean
    public Docket docket(){

        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());
    }

    //配置swagger信息apiInfo
    private ApiInfo apiInfo(){
        //作者信息
        Contact contact = new Contact("宋先慧", "https://blog.csdn.net/sxh06", "xianhuisong@yeah.net");
        return new ApiInfo(
                "宋先慧的Api Documentation",
                "学习swagger没有尽头",
                "1.0",
                "urn:tos",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }

}

swagger配置扫描接口

@Configuration
@EnableSwagger2 //开启swagger2
public class SwaggerConfig {

//    @Bean
//    public Docket docket1(){
//        return new Docket(DocumentationType.SWAGGER_2).groupName("分组二");
//    }
    @Bean
    public Docket docket(Environment environment){


        Profiles profiles=Profiles.of("dev");
        //获取项目的环境
         boolean flag=environment.acceptsProfiles(profiles);

        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .groupName("宋先慧")  //分组
                .enable(flag)  //enable 配置是否启动swagger  flase则不能在浏览器访问
                .select()
                //RequestHandlerSelectors实现类  配置扫描方式
                // basePackage指定要扫描的包
                // any()全部
                // none()都不扫描
                //withClassAnnotation()  扫描类上的注解  参数是一个注解的反射对象
                //withMethodAnnotation   扫描方法上的注解
                .apis(RequestHandlerSelectors.basePackage("com.sxh.swagger.controller"))
                //.apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class))
                //过滤什么路劲  过滤请求
                //.paths(PathSelectors.ant("/sxh/**"))
                .build();
    }

    //配置swagger信息apiInfo
    private ApiInfo apiInfo(){
        //作者信息
        Contact contact = new Contact("宋先慧", "https://blog.csdn.net/sxh06", "xianhuisong@yeah.net");
        return new ApiInfo(
                "宋先慧的Api Documentation",
                "学习swagger没有尽头",
                "1.0",
                "urn:tos",
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }

}

如果我只希望在生成环境使用swagger,在正式环境不使用swagger怎么解决?(enable=false|true)

配置api文档分组

在这里插入图片描述

多个分组

配置多个Docket 实例即可

 @Bean
    public Docket docket1(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("分组一");
    }

 @Bean
    public Docket docket2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("分组二");
    }`

实体类配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

到此这篇关于Java Swagger技术使用指南的文章就介绍到这了,更多相关Java Swagger内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java.SE数组的一些常见练习题

    Java.SE数组的一些常见练习题

    数组可以看成是相同类型元素的一个集合,在内存中是一段连续的空间,这篇文章主要给大家介绍了关于Java.SE数组的一些常见练习题,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • SpringBoot中Aware接口使用及原理解析

    SpringBoot中Aware接口使用及原理解析

    在Spring中存在一个Aware接口,实现该接口可以让我们的Bean获取到Spring容器中特定的资源,但该接口只是个标记接口,不存在任何方法,本文将给大家详细介绍一下SpringBoot中Aware接口使用及原理,需要的朋友可以参考下
    2023-08-08
  • Sharding JDBC读写分离实现原理及实例

    Sharding JDBC读写分离实现原理及实例

    这篇文章主要介绍了Sharding JDBC读写分离实现原理及实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Intellij IDEA创建spring-boot项目的图文教程

    Intellij IDEA创建spring-boot项目的图文教程

    本文通过图文并茂的形式给大家介绍了Intellij IDEA创建spring-boot项目的教程,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友参考下吧
    2018-01-01
  • 全面解读Java编程中的内部类

    全面解读Java编程中的内部类

    这篇文章主要介绍了Java的内部类,包括类成员访问等Java入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • Java并发中的Fork/Join 框架机制详解

    Java并发中的Fork/Join 框架机制详解

    本文主要介绍了 Java 并发框架中的 Fork/Join 框架的基本原理和其使用的工作窃取算法(work-stealing)、设计方式和部分实现源码,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • java开发Activiti进阶篇流程实例详解

    java开发Activiti进阶篇流程实例详解

    这篇文章主要为大家介绍了java开发Activiti进阶篇流程实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • 详解Mybatis逆向工程中使用Mysql8.0版本驱动遇到的问题

    详解Mybatis逆向工程中使用Mysql8.0版本驱动遇到的问题

    今天在使用 8.0.12 版的 mysql 驱动时遇到了各种各样的坑。这篇文章主要介绍了详解Mybatis逆向工程中使用Mysql8.0版本驱动遇到的问题,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Spring Bean中的六种作用域你了解吗

    Spring Bean中的六种作用域你了解吗

    Bean的作用域是指Bean实例的生命周期及可见性范围,Spring框架定义了6种作用域,本文就来和大家聊聊这6种作用域的定义与使用,希望对大家有所帮助
    2023-09-09
  • java String类功能、原理与应用案例【统计、判断、转换等】

    java String类功能、原理与应用案例【统计、判断、转换等】

    这篇文章主要介绍了java String类功能、原理与应用案例,结合实例形式详细分析了java String类的基本功能、构造方法,以及使用String类实现统计、判断、转换等功能相关操作技巧,需要的朋友可以参考下
    2019-03-03

最新评论