使用Swagger2构建强大的API文档

S7-1500与WinCC GroupDisplay组显示的高效配置指南 本文详细介绍了S7-1500 PLC与WinCC GroupDisplay组显示功能的高效配置方法,涵盖报警状态配置、WinCC端组显示控件设置及常见问题排查。通过实战案例和优化建议,帮助工程师快速掌握工业自动化项目中报警信息可视化的关键技术,提升生产线监控效率。 阅读详情

简介

​ 随着前后端分离架构和微服务架构的流行,我们使用Spring Boot来构建RESTful API项目的场景越来越多。通常我们的一个RESTful API就有可能要服务于多个不同的开发人员或开发团队:IOS开发、Android开发、Web开发甚至其他的后端服务等。为了减少与其他团队平时开发期间的频繁沟通成本,传统做法就是创建一份RESTful API文档来记录所有接口细节,然而这样的做法有以下几个问题:

  • 由于接口众多,并且细节复杂(需要考虑不同的HTTP请求类型、HTTP头部信息、HTTP请求内容等),高质量地创建这份文档本身就是件非常吃力的事,下游的抱怨声不绝于耳。
  • 随着时间推移,不断修改接口实现的时候都必须同步修改接口文档,而文档与代码又处于两个不同的媒介,除非有严格的管理机制,不然很容易导致不一致现象。

​ 为了解决上面这样的问题,本文将介绍RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful API。

具体效果如下图所示:
在这里插入图片描述

使用

1.添加Swagger依赖
<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>
2.添加配置类
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.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@EnableSwagger2
@Configuration
public class Swagger2 {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.web.swagger"))
                .paths(PathSelectors.any())
                .build();
    }

    /** 用来创建该Api的基本信息(这些基本信息会展现在文档页面中) **/
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("使用Swagger2构建RESTful APIs")
                .description("更多相关文章请关注:https://blog.youkuaiyun.com/backbug")
                .termsOfServiceUrl("https://swagger.io/")
                .license("Apache License, Version 2.0")
                .licenseUrl("https://www.apache.org/licenses/LICENSE-2.0.html")
                .contact(new Contact("xxx","https://www.baidu.com","xxx@xxx.xxx"))
                .version("1.0")
                .build();
    }
}

至此,前期准备工作已经完成。下面开始使用

3.添加文档内容

在完成了上述配置后,其实已经可以生产文档内容,访问 http://localhost:8080/swagger-ui.html 即可看到,但是描述对用户并不友好,我们通常需要自己增加一些说明来丰富文档内容。 我们通过@Api,@ApiOperation注解来给API增加说明、通过@ApiImplicitParam、@ApiModel、@ApiModelProperty注解来给参数增加说明。

①实体对象:

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@ApiModel(description = "用户实体对象")
@Data
public class User {

    private Long id;

    @ApiModelProperty(value = "姓名")
    private String name;

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

    /** 表示api中不展示此字段 **/
    @ApiModelProperty(hidden = true)
    private String mobile;
}

②Controller层的使用

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

import java.util.ArrayList;
import java.util.List;

@Api(tags = {"测试"})
@RequestMapping("/swagger")
@RestController
public class SwaggerController {

    @ApiOperation(value = "获取用户列表", notes = "")
    @GetMapping("/getAll")
    public List<User> getUserList() {
        return new ArrayList<>();
    }

    /**
     * paramType:参数放在哪个地方
     * · header --> 请求参数的获取:@RequestHeader
     * · query --> 请求参数的获取:@RequestParam
     * · path(用于restful接口)--> 请求参数的获取:@PathVariable
     * · body
     * · form
     */
    @ApiOperation(value = "创建用户", notes = "根据User对象创建用户")
    @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User", paramType = "body")
    @PostMapping("/add")
    public String add(@RequestBody User user) {
        System.err.println(user);
        return "success";
    }

    @ApiOperation(value = "获取用户信息", notes = "根据id来获取用户详细信息")
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path", example = "1")
    @GetMapping("/detail/{id}")
    public User detail(@PathVariable Long id) {
        System.err.println(id);
        return new User();
    }

    @ApiOperation(value = "更新用户信息", notes = "根据id来指定更新对象,并根据传过来的user信息来更新用户详细信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path", example = "1"),
            @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User", paramType = "body")
    })
    @PutMapping("/edit/{id}")
    public String edit(@PathVariable Long id, @RequestBody User user) {
        System.err.println(id);
        System.err.println(user);
        return "success";
    }

    @ApiOperation(value = "删除用户", notes = "根据id来指定删除对象")
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long", paramType = "path", example = "1")
    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable Long id) {
        System.err.println(id);
        return "success";
    }

    @ApiIgnore
    @GetMapping("/test")
    public String test() {
        return "success";
    }
}

③页面效果

访问 http://localhost:8080/swagger-ui.html查看api信息
在这里插入图片描述
在这里插入图片描述

相比为这些接口编写文档的工作,我们增加的配置内容是非常少而且精简的,对于原有代码的侵入也在忍受范围之内。因此,在构建RESTful API的同时,加入Swagger来对API文档进行管理,是个不错的选择。


拓展

如果觉得上边的配置还是有点麻烦的话,这里提供另外一个开源项目:

https://github.com/SpringForAll/spring-boot-starter-swagger

使用spring4all的方式(与SpringBoot集成好了)

添加依赖:

<dependency>
    <groupId>com.spring4all</groupId>
    <artifactId>swagger-spring-boot-starter</artifactId>
    <version>1.9.0.RELEASE</version>
</dependency>

添加相关配置信息:

### spring4all - Swagger
### 使用注解@EnableSwagger2Doc
swagger.title=使用Swagger2构建RESTful APIs
swagger.description=更多相关文章请关注:https://blog.youkuaiyun.com/backbug
swagger.version=1.0
swagger.license=Apache License, Version 2.0
swagger.licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.html
swagger.termsOfServiceUrl=https://github.com/dyc87112/spring-boot-starter-swagger
swagger.contact.name=xxx
swagger.contact.url=https://www.baidu.com
swagger.contact.email=xxx@xxx.xxx
swagger.base-package=com.example.demo
swagger.base-path=/**

各个属性说明:

  • swagger.title`:标题
  • swagger.description:描述
  • swagger.version:版本
  • swagger.license:许可证
  • swagger.licenseUrl:许可证URL
  • swagger.termsOfServiceUrl:服务条款URL
  • swagger.contact.name:维护人
  • swagger.contact.url:维护人URL
  • swagger.contact.email:维护人email
  • swagger.base-package:swagger扫描的基础包,默认:全扫描
  • swagger.base-path:需要处理的基础URL规则,默认:/**

此时准备工作已经完成,可以在项目中使用了,同上。

参考

https://mp.weixin.qq.com/s/HlTZp1yfspQ0v1v63udpag

uniapp [全端兼容] - 实现上传本地视频到后端服务器及在线预览播放视频+移除视频+进度条上传,将已选视频上传服务端并可预览视频和删除功能,上传单个或多个视频文件及大文件(H5、小程序、app) uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,uniapp+uview上传视频并预览,UNI-APP视频上传组件,实现视频文件上传视频回显,上传视频并预览、上传多个视频,实现上传视频功能+预览,上传显示视频功能,上传视频预览移除,批量上传视频,上传超大视频文件,视频上传并预览效果,uniapp上传视频,使用uview上传视频及预览,上传视频和删除视频功能,视频流上传播放功能,上传视频到后端,视频上传与实时预览功能,upload上传组件,视频播放器 阅读详情

相关推荐

混合整数规划(MIP)在资源优化中的实战应用

本文深入探讨了混合整数规划(MIP)在资源优化中的实战应用,从菜市场采购到工厂调度,再到物流配送和钢铁厂切割问题。通过分支定界法和割平面法等技术,MIP能够有效解决包含整数和连续变量的复杂优化问题,提升企业运营效率。文章还介绍了现代求解器的优化策略和实际项目中的避坑指南,帮助读者更好地应用MIP技术。

weixin_30500105的博客 91

SpringBoot集成Swagger2的增强版Knife4j

Knife4j是一个集Swagger2 和 OpenAPI3 为一体的增强解决方案。增强扩展基础ui组件(自定义文档、动态参数调试、I18n、接口排序、导出等)基于Springfox框架+Swagger2规范的自动注入starter基于Springdoc-openapi+OAS3规范的自动注入starter提供对主流网关组件的统一聚合OpenAPI接口文档的解决方案。

笑小枫 3495

eLabRadio软件无线电虚实结合仿真开发平台简介

在使用仿真平台时,不要关闭设备或断开设备与PC机之间的网络连接,否则,仿真平台将无法正常工作。注:采用eNodeX设备认证方式,当出现“设备不存在”的报错时,请检查计算机IP是否和硬件设备IP处于同一网段,或者是否是先连接好网线,再开启硬件设备的。①此登录方式下,需要先建立软件与硬件的通信:在登录窗口点击【网络配置】,参照下图输入设备IP,服务器地址无需设置,设置完成后点击确认,此时登录界面无需设置账号密码;,拷贝到电脑上,使用管理员权限运行setup.exe,下一步直到安装完成,桌面会生成快捷方式。

weixin_55349105的博客 6320

Java中Spring Boot框架集成Swagger2增强版Knife4j

【代码】Spring Boot 框架集成Knife4j。

LeungChunwai的博客 447

CarPlay无线连接开发实战:从蓝牙EIR查询到iAP2认证的完整代码逻辑梳理

本文详细解析了无线CarPlay连接开发的完整流程,从蓝牙EIR查询到iAP2认证的代码实现。重点介绍了蓝牙握手、WiFi Beacon帧配置、热点信息准备等关键环节的实战技巧,帮助开发者快速搭建稳定可靠的无线CarPlay连接系统。

weixin_31534091的博客 322

LSF实践专题(15):LSF队列优先级以及抢占功能初探

在LSF暂停作业时,会向作业发送一个SIGTSTP信号,并且将作业状态变成SSUSP(system suspend),表示被系统暂停,这时,最好是作业的应用能够捕获和处理SIGTSTP信号,否则,即使在LSF中,作业会被认为暂停了,并且释放了slots资源,但是在实际OS中,作业进程仍然在继续,并且不会释放CPU等计算资源。是指LSF自动将低优先级作业暂停(suspend),将空余出来的资源交给高优先级队列中的作业使用,等到高优先级队列的作业结束后,再将被暂停的作业恢复(resume)并继续运行。

richycn的博客 1919

SpringBoot+swagger2增强搭建

先看效果图 POM配置 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <depend.

Liaryank的博客 589

CLion for Mac(m1)配置GCC编译器

条件:电脑已经下载过XCode 一. 下载HomeBrew homebrew是一款macos,linux下的包管理工具,我们需要使用他来下载GCC 下载方法: 1.打开终端(terminal) 2.输入 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" ps.有可能会遇到的问题 我当初下载挂了VPN,优快云上还有很多解决问题的方法,可以将错误信

supermario19的博客 7847

Swagger2(Knife4J)

​ ‌Swagger和Knife4j的关系是:Knife4j是基于Swagger的一个增强解决方案,用于集成Swagger生成API文档。‌

2301_79792364的博客 1068

【局部规划模块轨迹优化算法】EM_planner最大期望滚动优化算法

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对EM_planner最大期望滚动优化算法做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 762

YOLO11-Seg优化:卷积变体系列篇 | 动态蛇形卷积(Dynamic Snake Convolution) | ICCV2023

动态蛇形卷积(Dynamic Snake Convolution),增强微小特征提取能力,引入到YOLO11-Seg,与C3k2结合实现二次创新

会AI的学姐 371

Spring Boot配置Swagger增强工具

参考knife4j官方网站:1.6 快速开始 | knife4j 一、话不多说,先看效果 1.Swagger页面这样,这里就不多做介绍 2.增强后的首页 3.API列表 4.API请求参数 5.API响应参数 个人觉得增强后看着很清晰,比原来的要好很多。 二、开始配置 1.pom.xml 配置 <dependency> <groupId>io.springfox</groupId> ...

m0_38075227的博客 4307

【DRAM存储器六十六】DDR5介绍--训练相关之CA/CS Training

详述DDR5 CA/CS training过程细节

highman110的博客 200

SpringBoot中使用Swagger2构建强大的API文档

原文标题:Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档 作者:程序猿DD_ 链接:http://blog.didispace.com/spring-boot-learning-21-2-2/ 阅读目录前言准备工作整合Swagger2添加文档内容API文档访问与调试代码示例其他参考 前言 随着前后端分离架构和微服务架构的流行,我们使用Spring Boot来构建RESTful API项目的场景越来越多。通常我们的一个RESTful API就有可能要服务于多个不同的开发人.

锦瑟年华,逐梦之人 294

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VC中sqlite的使用

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

Spring Boot中使用Swagger2构建强大的RESTful API文档

Spring Boot中使用Swagger2构建强大的RESTful API文档 由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。 这样一来,我们的RE...

天才小站 148

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Swagger2构建强大的RESTful API文档实战

一 点睛 RESTful API的重磅好伙伴Swagger2,它可以轻松的整合到Spring Boot中,并与Spring MVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,同时说明内容又整合入实现代码中,让维护文档和修改代码整合为一体,可以让我们在修改代码逻辑的同时方便的修改文档说明。另外Swagger2也提供了强大的页面测试功能来调试每个RESTful A...

实践求真知 371

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring Boot 2.0---使用Swagger2构建强大的API文档

Spring Boot 2.0 ---使用Swagger2构建强大的API文档 随着前后端分离架构和微服务架构的流行,我们使用Spring Boot来构建RESTful API项目的场景越来越多。通常我们的一个RESTful API就有可能要服务于多个不同的开发人员或开发团队:IOS开发、Android开发、Web开发甚至其他的后端服务等。为了减少与其他团队平时开发期间的频繁沟通成本,传统...

zhangbijun1230的专栏 726

springboot中使用swagger2构建强大的RESTful API文档

目录 一 、什么是swagger?(简介、使用它带来的便捷) 二 、 如何搭建swagger 三、搭建完成后如何使用swager     一 、什么是swagger?(简介、使用它带来的便捷)     Swagger 是一个RESTful接口的文档的实时生成与测试工具。没接触过类似工具的你可能对这句话没什么概念,不要急,我来慢慢解释。     使用REST的原因之一就是方便前后端分...

Mr.zhao 745

使用Swagger2构建强大的RESTful API文档(1)(二十二)

由于Spring Boot能够快速开发、便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API。而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端。 这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发、Androi...

weixin_34034670的博客 78

spring boot api文档_Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档

作者 | 翟永超来源 | didispace.com/spring-boot-learning-21-2-2/随着前后端分离架构和微服务架构的流行,我们使用Spring Boot来构建RESTful API项目的场景越来越多。通常我们的一个RESTful API就有可能要服务于多个不同的开发人员或开发团队:IOS开发、Android开发、Web开发甚至其他的后端服务等。为了减少与其他团队平时开发期...

weixin_39633054的博客 204

spring boot 基础案例【4】使用Swagger2构建强大的API文档

教程1教程2进入正文。

weixin_39818813的博客 1021

奇安信测开笔试考点拆解:安全厂商测试岗备考复习指南

软件测试岗位的笔试,看似考察工具和语法,实则检验工程师对系统原理的理解深度。无论是Linux命令与日志分析、网络连接数测试,还是数据库SQL聚合查询,都是测试工作中最高频的基础能力,也是笔试中最容易拉开差距的板块。理解原理意味着能设计更完备的测试用例,能定位更深层的问题,这也是安全厂商测试岗尤其看重的素质。随着持续集成和自动化测试的普及,Pytest测试框架、Appium移动端自动化、Jenkins流水线集成已成为测试开发工程师的标配技能。从功能测试到安全测试,从用例设计到性能评估,每一个环节都需要扎实的工

weixin_34332905的博客 337
上一篇: 单元测试之Mock模拟对Controller进行测试
下一篇: Swagger静态文档的生成
淋雨一直走啊
博客等级 码龄11年 39粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值