首页 > 编程语言 >java Swagger 使用汇总

java Swagger 使用汇总

时间:2024-04-20 20:11:06浏览次数:26  
标签:Swagger java 汇总 接口 api 文档 new swagger Docket

Swagger

1.Swagger 简介

  • 最流行的api框架
  • restful api在线自动生成工具: api文档与api定义同步更新
  • 直接运行,可以在线测试api接口
  • 支持多种语言:java,php

2.官网 https://swagger.io

在项目中使用swagger需要springbox

  • swagger2
  • ui

3.SpringBoot集成Swagger

https://mvnrepository.com -->springfox-swag

1.新建项目

2.添加依赖到pom.xml

  • springfox-swagger2
  • springfox-swagger-ui
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>3.0.0</version>
</dependency>
    
 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>3.0.0</version>
</dependency>

3.添加配置文件Swagger==> Config

@Configuartion
@EnableSwagger2  //开启swagger2
public class SwaggerConfig{
    
   //配置了swagger的docket的bean实例
    @Bean
    public Docket dockert(){
        
        
        return new Docket(DocumentationType.SWAGGER_2)
            .apiInfo(apiInfo()
            .select()
                     //RequestHandlerSelectors 配置要扫描接口的方式
                     //basePackage 指定要扫描的包
            .apis(RequestHandlerSelectors.basePackage("com.xxpage.controller"))
                    //paths() 过滤路径
            .paths(PathSelectors.ant("/chen/**")) 
            .build();
    }
    
    private ApiInfo apiInfo(Environment environment){
        //设置要显示的swagger环境
         Profiles profiles=Profiles.of("dev","test");
        //通过environment判断是否处在自己设定的环境中
         boolean flag=environment.acceptsProfiles(profiles)
        
        Contact contact=new Contact("chen","http://blog.xx.com","[email protected]");
        
        return new ApiInfo(
          title:"xxx项目的swagger api 文档",
          description:"xx",
          version:"v1.0",
          .enable(flag),  //是否启用swagger fasle
          termsOfServiceUrl:"https://blog.xxx.com",
          contact,
          license:"Apache 2.0",
          licenseUrl:"http://www.apache.org",
          new ArraList()
        );
    }
}


4.配置swagger

 return new ApiInfo(
          title:"xxx项目的swagger api 文档",
          description:"xx",
          version:"v1.0",
          .enable(flag),  //是否启用swagger fasle
          .groupName("api1.0")
          termsOfServiceUrl:"https://blog.xxx.com",
          contact,
          license:"Apache 2.0",
          licenseUrl:"http://www.apache.org",
          new ArraList()
        );

5.配置swagger扫描接口

   //RequestHandlerSelectors 配置要扫描接口的方式
                     //basePackage 指定要扫描的包
            .apis(RequestHandlerSelectors.basePackage("com.xxpage.controller"))

6.配置api文档的分组

.groupName("api1.0")

7.配置多个api文档分组:多个Docket实例即可

  @Bean
    public Docket dockert(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("api1.0");
    }
   
  @Bean
    public Docket dockert2(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("api21.0");
    }

  @Bean
    public Docket dockert3(){
        return new Docket(DocumentationType.SWAGGER_2).groupName("api3.0");
    }

8.配置API方法,参数的接口说明,生成swagger文档时有对应的中文说明

@ApiOperation("xxx控制类")
@GetMapping("/user")
public String user(@ApiParam("用户名") String username){
       return "hello";
}

4.swagger总结

  1. 可以通过swagger给接口,参数添加注释,方便测试人员理解
  2. 接口文档实时更新,不用另外发时间写一套接口文档
  3. 可以在线测试,发表了接口就有了swagger接口文档
  4. 在正式发布的时间,关闭swagger,提供运行速度和接口安全

标签:Swagger,java,汇总,接口,api,文档,new,swagger,Docket
From: https://www.cnblogs.com/chenshaojun2008/p/18148088

相关文章

  • Java面试题:为什么HashMap不建议使用对象作为Key?
    HashMap是一种基于哈希表的动态数据结构,它允许使用任意不可变对象作为键(key)来存储和检索数据。然而,在某些情况下,使用对象作为HashMap的键可能会遇到一些问题。 首先,我们需要明确对象作为HashMap的键需要满足一些条件:不可变性:对象的属性不能被修改,因为如果属性被修改,那......
  • JavaScript变量的奥秘:从声明到使用,一文掌握!
    在编程的世界里,数据是构建一切的基础。而在JavaScript中,变量就是存储数据的容器。它们就像是我们生活中的盒子,可以装下各种物品,让我们在需要的时候随时取用。今天,就让我们一起揭开变量的神秘面纱,探索它们的概念、使用规则,以及那些令人头疼的错误。一、变量的概念和作用变量,顾名......
  • 01、Java 安全-反序列化基础
    Java反序列化基础1.ObjectOutputStream与ObjectInputStream类1.1.ObjectOutputStream类java.io.ObjectOutputStream类,将Java对象的原始数据类型写出到文件,实现对象的持久存储。序列化操作一个对象要想序列化,必须满足两个条件:该类必须实现java.io.Serializable接口,......
  • 【Java 线程】SpringBoot 启动后都有哪些线程呢?
    1 前言现在流行搞微服务,基本也都是SpringBoot打底的,那么你可否知道一个基本的SpringBoot启动后,都开辟了哪些线程呢?这节我们就来看看。为什么要看呢?这个主要是增加对服务的了解,比如你管的支付中心或者订单中心,你都有哪些线程,各个线程都是干什么的,你不了解这些你怎么调优,你......
  • 4.Java流程控制
    Java流程控制Scannner对象(获取用户的输入)//基本格式:Scannerscanner=newScanner(System.in);Stringstr=scanner.nextLine();//其中nextLine()按情况替换scanner.close();publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接受......
  • java中的set集合
    java中的set集合目录java中的set集合1.HashSet集合1.1HashSet的特点1.2HashSet常用方法2.LinkedHashSet集合2.1LinkedHashSet集合的特点3.TreeSet集合3.1TreeSet集合的特点3.2TreeSet的基本使用4.HashSet、LinkedHashSet、TreeSet的使用场景5.list和set集合的区别5.1有序性5.2唯......
  • java中的接口
    java中的接口目录java中的接口特征接口回调接口和抽象类的异同总结特征接口使用interface关键字接口中的所有方法默认都是publicabstract修饰接口中所有的成员变量都是publicstaticfinal修饰接口没有构造方法,构造方法用于创建对象(接口没办法new对象),但是接口使用......
  • Java 集合进阶使用(List Map Set)
    CollectionCollection是其子集的父类,所以可以使用多态的规矩,比如:创建一个ArrayList对象,用Collection接收Collection<Integer>collection=newArrayList<>();注意:Collection为接口,不能直接创建对象,但可以利用其子类,使用Collection方法,就如上方代码一样Collection......
  • 【转载】Java函数式编程——为什么new Thread()中要用函数式编程
    面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想:做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:只要能获取到结果,谁去做的,怎么做的都不重要,......
  • Python与Java数据结构语法区别
    数组参考链接:CS61BPythonzeroedLst=[0,0,0]lst=[4,7,10]lst[0]=5print(lst[0])print(lst)print(len(lst))Javaint[]zeroedArray=newint[3];int[]array={4,7,10};array[0]=5;System.out.println(array[0]);System.out.println(Ar......