Swagger2使用及整合

springboot2与swagger2整合 传统的做法,我们应该会为每个系统准备一份接口文档,方便各个团队之间的交流。但是在微服务快速发展的今天,各个系统之间的交流基本都依赖于接口调用,这样就导致接口变得越来越多,开发人员在开发的同时还要维护文档,任务量加重,哀声一片,也可能会出现开发人员未及时维护文档,使得文档与接口信息不一致。 传统做法,在如今是一个不太友好的方式,为了解决上述问题,Swagger出现了。Swagger是一款可以通过注... 阅读详情
AI摘要

本文详细介绍Swagger2的使用,包括其在RESTful接口中自动生成文档和功能测试的能力。覆盖Swagger2的常见注解,如@Api、@ApiOperation、@ApiParam等的使用场景和示例,以及SpringBoot集成Swagger2的步骤。

一、介绍Swagger2

Swagger是一款RESTful接口的文档在线自动生成、功能测试功能框架。一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务,加上swagger-ui,可以有很好的呈现。

二、常用注解

这里是说明常用注解的含义和基本用法(也就是说已经对swagger进行集成完成) 
没有集成的请参见 
SpringBoot集成springfox-swagger2构建restful API 
SpringMVC集成springfox-swagger2构建restful API 
官网WIKI 
常用注解: 

注解作用处描述
@Api用于类表示标识这个类是swagger的资源 
@ApiOperation用于方法表示一个http请求的操作 
@ApiParam用于方法,参数,字段说明表示对参数的添加元数据(说明或是否必填等) 
@ApiModel用于类表示对类进行说明,用于参数用实体类接收 
@ApiModelProperty用于方法,字段 表示对model属性的说明或者数据操作更改 
@ApiIgnore用于类,方法,方法参数 表示这个方法或者类被忽略 
@ApiImplicitParam用于方法 表示单独的请求参数 
@ApiImplicitParams用于方法包含多个 @ApiImplicitParam
   

1、@Api() 
用于类;表示标识这个类是swagger的资源 

  • tags–表示说明 
  • value–也是说明,可以使用tags替代 

但是tags如果有多个值,会生成多个list

@Api(value="用户controller",tags={"用户操作接口"})
@RestController
public class UserController {

}

 效果:

 

2、@ApiOperation() 

用于方法;表示一个http请求的操作 

  • value用于方法描述 
  • notes用于提示内容 
  • tags可以重新分组(视情况而用) 

3、@ApiParam() 

用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等) 

  • name–参数名 
  • value–参数说明 
  • required–是否必填
@Api(value="用户controller",tags={"用户操作接口"})
@RestController
public class UserController {
     @ApiOperation(value="获取用户信息",tags={"获取用户信息copy"},notes="注意问题点")
     @GetMapping("/getUserInfo")
     public User getUserInfo(@ApiParam(name="id",value="用户id",required=true) Long id,@ApiParam(name="username",value="用户名") String username) {
     // userService可忽略,是业务逻辑
      User user = userService.getUserInfo();

      return user;
  }
}

效果图: 
这里写图片描述

 

4、@ApiModel()

用于类 ;表示对类进行说明,用于参数用实体类接收 

  • value–表示对象名 
  • description–描述 

都可省略 

5、@ApiModelProperty()

用于方法,字段; 表示对model属性的说明或者数据操作更改 

  • value–字段说明 
  • name–重写属性名字 
  • dataType–重写属性类型 
  • required–是否必填 
  • example–举例说明 
  • hidden–隐藏 

 entity bean类

@ApiModel(value="user对象",description="用户对象user")
public class User implements Serializable{
    private static final long serialVersionUID = 1L;
     @ApiModelProperty(value="用户名",name="username",example="xingguo")
     private String username;
     @ApiModelProperty(value="状态",name="state",required=true)
      private Integer state;
      private String password;
      private String nickName;
      private Integer isDeleted;

      @ApiModelProperty(value="id数组",hidden=true)
      private String[] ids;
      private List<String> idList;
     //省略get/set
}
  @ApiOperation("更改用户信息")
  @PostMapping("/updateUserInfo")
  public int updateUserInfo(@RequestBody @ApiParam(name="用户对象",value="传入json格式",required=true) User user){

     int num = userService.updateUserInfo(user);
     return num;
  }

 

效果图: 
这里写图片描述

这里写图片描述

 

6、@ApiIgnore()

用于类或者方法上,可以不被swagger显示在页面上 
比较简单, 这里不做举例

7、@ApiImplicitParam() 

用于方法 
表示单独的请求参数 

8、@ApiImplicitParams() 

用于方法,包含多个 @ApiImplicitParam 

  • name–参数ming 
  • value–参数说明 
  • dataType–数据类型 
  • paramType–参数类型 
  • example–举例说明
@ApiOperation("查询测试")
  @GetMapping("select")
  //@ApiImplicitParam(name="name",value="用户名",dataType="String", paramType = "query")
  @ApiImplicitParams({
  @ApiImplicitParam(name="name",value="用户名",dataType="string", paramType = "query",example="xingguo"),
  @ApiImplicitParam(name="id",value="用户id",dataType="long", paramType = "query")})
  public void select(){

  }

效果图: 
这里写图片描述

 

 

三、springboot集成

1、添加maven依赖

<!--swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>


<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency> 

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.marvin.demo</groupId>
    <artifactId>SpringBoot_Swagger_learn_demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>SpringBoot_Swagger_learn_demo</name>

    <!--引用springBoot-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--引入lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
        </dependency>
        <!--引入swagger2-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!--配置boot运行插件-->
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

2、配置启动类

添加注解@EnableSwagger2 

package com.marvin.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@SpringBootApplication
@EnableSwagger2
public class SwaggerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class);
    }
}

 

3、编写配置文件(SwaggerConfig.java)

定义Docket的bean类

package com.marvin.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

@Configuration
public class SwaggerConfig {
    /**
     * 初始化创建Swagger Api
     */
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)// 详细信息定制
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com"))//指定包路径,扫描com路径下的api文档
                .paths(PathSelectors.any())//路径判断
                .build();
    }
    /**
     * 添加摘要信息(会在界面显示的信息)
     */
    private ApiInfo apiInfo() {
        // 用ApiInfoBuilder进行定制
        return new ApiInfoBuilder()
                .title("Swagger开发规范")//标题
                .description("Saggger开发描述")
                .termsOfServiceUrl("http://baidu.com")//(不可见)条款地址
                .version("1.0.0")//版本号
                .build();
    }
}

4、controller 和 entity

 

 

5、结果测试

默认地址:http://localhost:8080/swagger-ui.html

 

学习Spring Boot:(六) 集成Swagger2 前言 Swagger是用来描述和文档化RESTful API的一个项目。Swagger Spec是一套规范,定义了该如何去描述一个RESTful API。类似的项目还有RAML、API Blueprint。 根据Swagger Spec来描述RESTful API的文件称之为Swagger specification file,它使用JSON来表述,也支持作为JSON支持的YAML。 Swag... 阅读详情

相关推荐

Java开发之Swagger的介绍和使用

我们只要按照Swagger的规范去定义接口及其相关信息,就可以做到生成对应的接口文档 + 在线接口调试。③在配置类WebMvcConfiguration中,设置静态资源映射,否则接口文档页面无法访问。②在配置类WebMvcConfiguration中,加入knife4j相关配置。说白了,可以把swagger理解为加强版的Postman和apiFox。①导入knife4j的maven坐标。来访问我们的swagger网页。2、如何使用Swagger?1、什么是Swagger?④运行项目,通过网址。

casually的博客 1020

一看就懂之Swagger神器(Java版)

Swagger 是一个规范且完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 2.编写代码 代码如下(示例):application.properties application-dev.properties(开发环境) application-pro.properties(生产环境) User类 Controller类 swagger配置类 马上来查看效果...

qq_42429369的博客 9868

springboot整合vue(使用swagger2 ui)

1.所需要swagger2的依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</v...

qq_43072818的博客 1618

【Java】Swagger(文档交互)

了解Swagger的作用和概念了解前后端分离在SpringBoot中集成swaggerSwagger简介前后端分离后端时代:前端只用管理静态页面;html由后端做。前后端分离时代后端:控制层、服务层、数据访问层前端:前端控制层、视图层位置后端数据,json。已经存在了,不需要后端,前端工程依旧能够跑起来前后端如何交互?通过API前后端相对独立,松耦合前后端甚至可以部署在不同的服务器上前后端集成联调,前后端人员和后端任务无法做到,即使协商,尽早解决,最终导致问题集中爆发;

qq_30130205的博客 3442

SpringBoot与Swagger2整合指南

SpringBoot,作为Spring家族中的最新成员,旨在简化基于Spring的应用开发,特别是新项目的初始搭建以及开发过程。它通过约定优于配置的原则,采用嵌入式web容器来实现自动配置,从而让开发者无需手动进行大量繁琐的配置。在软件开发的过程中,API文档是开发者之间沟通的桥梁。然而,传统的API文档编写往往是劳动密集型工作,容易出错且难以保持更新。随着时间的推移,自动化API文档生成工具应运而生。

weixin_35886636的博客 754

关于@EnableSwagger2报错的正常使用demo

关于@EnableSwagger2报错的正常使用demo

springboot整合swagger2

Spring Boot 整合 Swagger2 的作用主要体现在以下几个方面:自动生成接口文档:Swagger2 能够根据 Spring Boot 项目中的代码自动生成 RESTful API 文档,减少了手动编写和维护 API 文档的工作量。提高开发效率:通过自动生成的文档,开发人员可以快速了解和测试各个 API 接口的功能和参数,提高了开发效率。减少沟通成本:在前后端分离的开发模式中,Swagger2 提供的在线文档可以减少前后端的沟通成本,帮助新加入项目的同事快速上手业务。

2403_87916407的博客 1704

YOLOv10注意力革新:小波域注意力(WDA)如何实现多尺度特征精准聚焦

本文深入解析YOLOv10中的小波域注意力(WDA)机制,探讨其如何通过频域分解与动态聚焦实现多尺度特征精准提取。WDA模块结合离散小波变换与注意力机制,显著提升小目标检测性能,在VisDrone数据集上AP提升达12.6%。文章详细介绍了两种集成方案及代码实现,为计算机视觉开发者提供实用指南。

weixin_29079671的博客 253

SpringBoot整合Swagger2

SpringBoot整合Swagger2 一、Swagger简介 ​ Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件,被广泛应用于前后端分离项目中,用来降低前后端开发人员的沟通成本,因为Swagger可以根据后端接口的设计动态的生成restful风格的API文档供前端开发人员的使用。除此之外,Swagger还提供了接口测试功能,使得开发人员可以方便的测试接口的可用性。有了Swagger以后,开发人员再也不用维护接口文档了。 ​ Swagger目前应用最多的版本就是Swagge

m0_46159545的博客 425

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1324

Spark on Yarn 高可用模式部署流程

本文介绍了如何配置Spark和Yarn的高可用(HA)环境,以确保在大规模数据处理中避免单点故障。

xhaoDream的博客 1444

springboot整合swagger2以及swagger2的介绍与Spring Security的整合使用

1、首先引入jar包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</g

wjs040的博客 506

别再自己写组件了!用uni-app的midButton属性5分钟搞定中间凸起TabBar(H5/小程序通用)

本文详细介绍了uni-app官方提供的midButton属性,帮助开发者5分钟内实现中间凸起的TabBar效果,无需编写繁琐的自定义组件代码。该方案兼容H5和微信小程序平台,配置简单且维护成本低,大幅提升开发效率和性能表现。

weixin_30431445的博客 347

Swagger整合Oauth2

Swagger整合Oauth2

飘渺Jam的博客 5801

OFDM时频脉冲形状与子载波正交性的理解

从多载波调制的角度来理解子载波间正交,首先要明确OFDM默认的脉冲成型是时域矩形窗,时域上每个子载波 ej2πfnte^{j2πf_nt}ej2πfn​t 都被一个矩形窗脉冲gT(t)g_T(t)gT​(t)成型。其次,OFDM子载波间隔 等于 OFDM符号周期的倒数,这是子载波正交的条件。 ​ 根据时频脉冲形状,可以从时域上理解如左图(注意是矩形脉冲 乘 复指数),从频域上理解如右图(sinc脉冲 卷 频点)。 ​

weixin_43803202的博客 2215

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

swagger2和SpringMVC整合

1.相关依赖文件 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.8.0</version> </depen...

fz13768884254的博客 544

在Allegro设计界面中如何修改封装焊盘

在高密度板的情况下,SUIPLA(支持内层没有的焊盘摘掉)打勾,在高密度板的情况下,内层没有的焊盘摘掉可以增加走线的空间。3、修改完焊盘后,选择File→Update to Design(更新到设计)。然后关闭焊盘修改对话框即可。,将会定期不定期更新技术文章,互相学习交流。或者点击Options选项卡下要修改的焊盘,然后点击Edit修改。在Allegro PCB设计界面中修改封装焊盘的方法。2、然后点击封装上要修改的焊盘,右击选择Edit。修改完成后如下图所示。

bhxc809751502的博客 7806

springboot整合swagger2 (swagger-bootstrap-ui)

1. springboot整个swagger2 步骤: 第一步导入依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <depen

小艾的未解之谜 1万+

YOLO11改进-注意力-引入自调制特征聚合模块SMFA

SMFA(自调制特征聚合模块): SMFA模块用于协同建模局部和非局部信息,它分为两个分支:一个是EASA(Efficient Approximation of Self-Attention,简化的自注意力分支),用于捕获非局部信息;另一个是LDE(Local Detail Estimation,局部细节估计分支),用于捕获局部细节。EASA通过对输入特征进行下采样,然后利用全局特征的方差进行调制,再与原始特征进行聚合,提取非局部结构信息。LDE分支则通过卷积操作提取输入特征中的高频局部信息。

qq_64693987的博客 2208

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Swagger2整合

1.整合依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox<

m0_50242319的博客 164

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

07 Spring Boot整合 Swagger2

1. swagger简介 swagger是一个流行的API开发框架,这个框架以“开放API声明”(OpenAPI Specification,OAS)为基础, 对整个API的开发周期都提供了相应的解决方案,是一个非常庞大的项目(包括设计、编码和测试,几乎支持所有语言)。 Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。 总体目标是使客户端...

数据知道的博客 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

SpringBoot整合Swagger2,再也不用维护接口文档了!

前后端分离后,维护接口文档基本上是必不可少的工作。一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了。当然这是一种非常理想的状态,实际开发中却很少遇到这样的情况,接口总是在不断的变化之中,有变化就要去维护,做过的小伙伴都知道这件事有多么头大!还好,有一些工具可以减轻我们的工作量,Swagger2就是其中之一,至于其他类似功能但是却收费的软件,...

江南一点雨的专栏 16万+

Swagger2总结(Swagger2引入、Spring-Swagger2整合、Swagger2常用注解与插件)

Swagger2引入、Spring-Swagger2整合、Swagger2常用注解与插件

yinying293的博客 3913
上一篇: git第一次克隆输错用户名和密码无法修改
下一篇: VO,DTO,DO,PO的概念、区别和用处
Marvin-Fox
博客等级 码龄11年 190粉丝 100原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值