Spring Boot入门系列之:八、Spring Boot整合swagger

SpringBoot集成Swagger的详细步骤 目录 一、简介以及使用 二、整合步骤 三、注解说明 一、简介以及使用 号称:世界最流行的API框架 官网:http://swagger.io/ 解决什么问题: 在前后台分离的开发模式中,减小接口定义沟通成本,方便开发过程中测试,自动生成接口文档 使用方式: 1、通过官网配置文档,一个接口一个接口编写 2、通多注解配置,动态生成json数据,由框架自动生成代码展示 二、... 阅读详情

spring-boot-swagger

开发环境

开发工具: Intellij IDEA 2018.2.6

springboot: 2.0.7.RELEASE

jdk: 1.8.0_192

maven: 3.6.0

swagger: 2.9.2

swagger 简介

什么是 swagger ?

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

Swagger是一组开源项目,其中主要模块如下:

  • Swagger-tools:提供各种与Swagger进行集成和交互的工具。例如模式检验、Swagger 1.2文档转换成Swagger 2.0文档等功能。

  • Swagger-core: 用于Java/Scala的的Swagger实现。与JAX-RS(Jersey、Resteasy、CXF…)、Servlets和Play框架进行集成。

  • Swagger-js: 用于JavaScript的Swagger实现。

  • Swagger-node-express: Swagger模块,用于node.js的Express web应用框架。

  • Swagger-ui:一个无依赖的HTML、JS和CSS集合,可以为Swagger兼容API动态生成优雅文档。

  • Swagger-codegen:一个模板驱动引擎,通过分析用户Swagger资源声明以各种语言生成客户端代码。

搭建项目

  • pom.xml
<?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">
    <parent>
        <artifactId>spring-boot-examples</artifactId>
        <groupId>com.andy</groupId>
        <version>1.0.7.RELEASE</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>spring-boot-swagger</artifactId>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>io.spring.platform</groupId>
                <artifactId>platform-bom</artifactId>
                <version>Cairo-SR7</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>

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

    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <!--<mainClass>${start-class}</mainClass>-->
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

  • application.yml
# swagger 无须太多配置这里只是简单的配置了工程名
swagger:
# 是否让浏览器可以访问swagger页面
  show: true
  • 启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @author Leone
 * @since 2018-05-29
 **/
@EnableSwagger2
@SpringBootApplication
public class SwaggerApplication {
    public static void main(String[] args) {
        SpringApplication.run(SwaggerApplication.class);
    }
}
  • SwaggerConfig.java
import com.google.common.base.Predicates;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.Collections;

import static springfox.documentation.builders.RequestHandlerSelectors.basePackage;

/**
 * @author Leone
 * @since 2018-07-12
 **/
@Component
public class SwaggerConfig {

    @Value("${swagger.show}")
    private Boolean enable;

    @Bean
    public Docket swaggerApi() {
        Parameter parameter = new ParameterBuilder()
                .name("Authorization")
                .description("token")
                .modelRef(new ModelRef("string"))
                .parameterType("header")
                .required(false)
                .defaultValue("token ")
                .build();
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(enable)
                .apiInfo(apiInfo())
                .groupName("web-API")
                .globalOperationParameters(Collections.singletonList(parameter))
                .select()
                .apis(basePackage("com.andy"))
                .paths(Predicates.alwaysTrue())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("API")
                .description("web接口文档")
                .version("v1.0.0")
                .termsOfServiceUrl("http://www.baidu.com")
                .contact(new Contact("leone", "https://leone.com", "leone@gmail.com"))
                .license("Apache2.0")
                .licenseUrl("http://www.apache.org")
                .build();
    }
}

  • ApiController.java
import com.andy.swagger.entity.UserDTO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.*;

/**
 * @author Leone
 * @since 2018-07-12
 **/
@RestController
@Api(tags = "文档接口:crud测试")
@RequestMapping("/api/user")
public class ApiController {

    @ApiOperation("查询用户列表")
    @GetMapping("/list")
    public String list(@ApiParam("当前页") @RequestParam Integer page, @RequestParam Integer size) {
        return "list";
    }

    @ApiOperation("保存用户")
    @PostMapping
    public String save(@RequestBody UserDTO userForm) {
        return "save";
    }

    @ApiOperation("删除用户")
    @DeleteMapping
    public String delete() {
        return "delete";
    }

    @ApiOperation("修改用户")
    @PutMapping
    public String update() {
        return "update";
    }

}


  • User.java
import java.io.Serializable;
import java.util.Date;

/**
 * @author Leone
 * @since 2018-07-12
 **/
public class User implements Serializable {

    private Long userId;

    private String account;

    private String password;

    private String description;

    private Integer age;

    private Date createTime;

    private boolean deleted;

    public User() {
    }

    public User(Long userId, String account, String password, String description, Integer age, Date createTime, Boolean deleted) {
        this.userId = userId;
        this.account = account;
        this.password = password;
        this.description = description;
        this.age = age;
        this.createTime = createTime;
        this.deleted = deleted;
    }

    // getset
}



  • UserService.java

package com.andy.swagger.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;

/**
 * @author Leone
 * @since 2018-07-12
 **/
@ApiModel
public class UserDTO {

    @ApiModelProperty(value = "用户账号")
    private String account;

    @ApiModelProperty(value = "密码")
    private String password;

    @ApiModelProperty(value = "生日")
    private Date birthday;

    @ApiModelProperty(value = "工资")
    private Double salary;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "是否删除")
    private Boolean deleted;

    // getset

}

  • UserVO.java
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.Date;

/**
 * @author Leone
 * @since 2018-07-12
 **/
@ApiModel
public class UserVO {

    @ApiModelProperty(value = "主键",example = "1200L")
    private Long userId;

    @ApiModelProperty("账号")
    private String account;

    @ApiModelProperty("自我介绍")
    private String description;

    @ApiModelProperty("年龄")
    private Integer age;

    @ApiModelProperty("创建时间")
    private Date createTime;

    // getset

}


传送门

Spring Boot-集成Swagger 再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及。 阅读详情

相关推荐

Spring Boot 2.0整合Swagger2.8

Spring Boot 2.0整合Swagger2.8 Swagger简介 Swagger是一系列RESTful API 的工具, 通过Swagger可以获得项目的一种交互式文档, 客户端SDK的自动生成等功能. 从 Swagger Github 的官方主页摘录: The goal of Swagger™ is to define a standard, language-agno...

米不开朗基罗的博客 3379

SpringBoot教程(十六) | SpringBoot集成swagger(全网最全)

一. 接口文档概述 swagger是当下比较流行的实时接口文文档生成工具。接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端要先出接口文档,前端根据接口文档来进行项目的开发,双方开发结束后在进行联调测试。 所以接口文档其实就是开发之前双方之间的一种约定。通常接口文档分为离线的和实时的。离线的接口文档工具有: word(相当于没说), YAPI, 小幺鸡等,这种文档需要程序员在上面编写,也一般具备接口测试功能。通常是由开发人员先在离线接口文档上编写信息,然后交给前端人员参照开发。最大的弊

lsqingfeng的博客 8万+

Spring Boot 进阶-实战Spring Boot整合Swagger3.0

通过上面的例子我们了解了Spring Boot 如何去整合Swagger3.0的基础操作,当然Swagger3.0所支持的操作并不是只有简单的这些,我们在后续的分享中也会更进一步的去介绍Swagger3.0的其他的用法。希望大家多多关注。

初学者 1375

Springboot集成Swagger

之前开发的时候,前端只用管理静态页面, http请求到后端, 模板引擎JSP,故后端是主力如今是前后端分离时代:后端:后端控制层,服务层,数据访问层前端:前端控制层,视图层伪造后端数据(JSON格式),便不再需要后端 ,方便了开发,等到前后端都开发完成之后,便不再使用伪造数据,而是访问远程后端接口前后端如何交互?

weixin_51351637的博客 1万+

[Java实战]Spring Boot 整合 Swagger2 (十六)

[Java实战]Spring Boot 整合 Swagger2 (十六)

曼岛_的博客 916

2021-03-08 使用SPDK部署NVMe over TCP

NVMe-oF Target入门指南 SPDK NVMe over Fabrics Target是一个用户空间应用程序,通过以太网,Infiniband或光纤通道等结构呈现块设备,SPDK目前支持RDMA和TCP传输。 本文将在已经编译好SPDK的基础上演示如何使用SPDK搭建NVMe over TCP,前提是您已经将一块NVMe硬盘挂载到linux系统中。 如果您想获取有关SPDK更详细的信息,请参考 官方文档。 演示过程的Host主机的ip地址是192.168.0.21,Target主机的ip地址是19

Pancras的博客 2843

【一】springboot整合swagger

springboot整合swagger

weixin_56995925的博客 2万+

从Protocol到硬件控制:揭秘高通UEFI中ABL与XBL的协作机制

本文深入解析了高通UEFI架构中ABL与XBL的协作机制,重点探讨了Protocol通信在硬件控制中的关键作用。通过对比传统GPIO控制方式,揭示了Protocol架构在安全性、可维护性和灵活性方面的优势,并提供了关机充电场景的实战案例分析及调试技巧。

weixin_29185199的博客 430

SpringBoot——整合Swagger

Swagger是一款基于RESTful接口的用于文档在线自动生成和功能测试的开发工具 为了减少前后端开发人员在开发期间的频繁沟通,可以使用Swagger提供的接口文档和线上接口进行前后端功能联调

生命的痕迹 3596

nnDetection复现Luna16 附模型

淘论文发现nnDetection框架对肺结节的检测效果挺好,便跑了跑复现了下, 作者诚不欺人,确实挺好, 并附上我依据文档训练的模型。

HeavenWalker 2597

鸿蒙【ArkTS】使用TS装饰器封装网络请求HTTP

在HarmonyOS应用开发中,通过HTTP访问网络,可以使用官方提供的@ohos.net.http模块。但是官方提供的直接使用不太好使用,需要封装下才好。这里采用TS的装饰器实现AOP效果 完成前后端接口风格的统一

weixin_60376559的博客 5609

Spring Boot整合swagger使用教程(这一篇就够了)

Spring Boot整合swagger使用教程(这一篇就够了)

qq_27480007的博客 4万+

MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)

目录 MQTT(一)C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载) MQTT(二)在windows64位上安装Python环境 MQTT(三)Python客户端+net客户端+net服务端 简单通信 MQTT(四)树莓派开机自动运行Python客户端 MQTT(五)EMQ开源MQTT消息服务器 1 什么是 MQTT ? MQTT(Message Que...

pw的博客 10万+

Spring Boot 整合 Swagger 教程详解

通过集成 Swagger,我们可以方便地生成接口文档,使得前后端开发协同更加高效。使用注解来描述接口信息,包括接口名称、请求方式、请求路径、请求参数、响应参数等;在配置类中配置 Swagger,包括扫描的包路径、接口文档信息、全局参数、安全协议、安全上下文等;描述数据模型、枚举类型、响应参数等信息,方便开发者查看和理解接口的功能和参数;在需要时使用@ApiIgnore 注解来忽略敏感参数的显示。最后,需要注意的是,Swagger 只是一种规范和工具集,它并不能取代单元测试和集成测试等其他测试方式。

不迁怒,不贰过。小知识,大智慧。 5494

win11禁止更新,草履虫教程

本文介绍了彻底禁止Windows 11系统更新的组合方法,包括禁用核心服务、修改注册表、关闭计划任务和使用组策略(专业版适用)。作者特别提醒,禁止更新会影响系统安全性,建议实体机保持更新,仅虚拟机等特殊情况下使用这些方法。同时强调即使禁用更新,也应定期手动检查重要安全补丁。文章最后附上了作者的个人网站信息。

testwzc1的博客 559

8.2 发展趋

分子泵技术正处在一个快速变革的时代,面对日益增长的应用需求和不断涌现的技术挑战,其发展呈现出多元化、智能化和高度集成化的趋势。这些发展趋势不仅代表着技术创新的方向,也预示着分子泵在未来工业体系中将要扮演的更加重要的角色。

技术工作者 113

Spring Boot 整合 Swagger

Swagger是由SmartBear Software开发的一套开源工具集,用于设计、构建、记录和使用RESTful风格的Web服务。它基于OpenAPI规范(OAS),允许开发者以YAML或JSON格式描述API,从而自动生成交互式的API文档。Swagger不仅仅是一个文档生成器,它还提供了一系列工具,如Swagger Editor、Swagger UI和Swagger Codegen,分别用于编辑API定义、可视化API文档和生成客户端代码。

2301_81623728的博客 990

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

07 Spring Boot整合 Swagger2

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

数据知道的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Swagger2以及Spring Boot整合Swagger2教程

Swagger 是一个规范和完整的框架,用于生成、描述、功能调用测试和可视化 RESTful 风格的在线的接口文档工具。Swagger 是一套基于 OpenAPI 规范(OpenAPI Specification,OAS)构建的开源工具。Swagger 提供了一套通过代码和注解自动生成可视化的 RESTful 风格的API文档,符合 RESTful API设计的行业标准。

yubin1285570923的博客 2042

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Spring Boot整合swagger

你可能尝试过写完一个接口后,自己去创建接口文档,或者修改接口后修改接口文档。而swagger就是一个在你写接口的时候自动帮你生成接口文档的东西,只要你遵循它的规范并写一些接口的说明注解即可。定义了3个环境的配置类,定义使用那个环境的配置类,模拟了一下只配置了端口,生产环境用的8081,在配置类中拿现在环境,进行判断,如果是生产环境关闭swagger。那既然是记录了接口文档,肯定不能在生产环境中使用 在swagger配置类中配置了在什么环境下可以查看接口及记录的接口文档。使用ui界面需要添加依赖。

m0_74356429的博客 1440

Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2

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

江南一点雨的专栏 1万+

Spring Boot——整合swagger

SpringBoot整合swagger

m0_47360542的博客 1587

【SpringBoot整合系列】SpringBoot3.x整合Swagger

那么问题来了,随着代码的不断更新,开发人员在开发新的接口或者更新旧的接口后,由于开发任务的 繁重,往往文档很难持续跟着更新,Swagger 就是用来解决该问题的一款重要的工具,对使用接口的人 来说,开发人员不需要给他们提供文档,只要告诉他们一个 Swagger 地址,即可展示在线的 API 接口 文档,除此之外,调用接口的人员还可以在线测试接口数据,同样地,开发人员在开发接口时,同样也 可以利用 Swagger 在线接口文档测试接口数据,这给开发人员提供了便利。进行方法返回对象的说明。

m0_74825003的博客 3221

Spring Boot整合swagger(使用swagger-spring-boot-starter)

在pom.xml中引入swagger依赖包 在application.properties中添加配置 配置内容参考如下: # swagger配置 swagger.title=对外开放接口API文档 swagger.description=HTTP对外开放接口 swagger.version=1.0.0 swagger.license=Apache License, Version 2.0 s...

qq_36306640的博客 5353

Spring boot整合 Swagger2 以及遇到的坑

build();.title(“旅游用车 APIs”).contact(“刘圈圈”).build();这个类要和启动类放在同一个目录下,用@Configuration注解该类,等价于XML中配置beans;用@Bean标注方法等价于XML中配置bean。

2401_86984509的博客 1793
上一篇: Spring Boot入门系列之:七、Spring Boot整合mongoDB
下一篇: Spring Cloud:一、微服务架构简介
exklin
博客等级 码龄9年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值