SpringBoot - SWAGGER2的集成与使用(一)

Springfox Swagger2从入门到精通 Swagger 是一种用于设计、构建、文档化和使用 RESTful API 的工具。Springfox 是 Swagger 在 Spring 应用中的集成库,提供了自动生成 API 文档的功能。在本文中,我们将探讨如何使用 Springfox Swagger2 在 Spring Boot 项目中生成、配置和使用 API 文档。 阅读详情

写在前面

在实际的前后端项目分离开发中,为了便于开发人员的沟通,一般都会构建一份 RESTful API 文档来描述所有的接口信息,但是传统文档不仅编写工作量巨大,且维护不便于更新和维护,为解决这些问题,在项目中使用 Swagger2 来构建在线接口文档,以满足日常开发工作的需要。
SWAGGER官网

SWAGGER2是干什么的?

SWAGGER2是一套基于OAS构建的开源软件框架,可以帮助开发人员设计、构建、记录和使用 RESTful Web 服务,它将代码和文档融为一体,可以完美解决文档编写繁琐、维护不方便等问题。使得开发人员可以将大部分精力集中到业务中,而不是繁杂琐碎的文档中,SWAGGER2包括的组件:

A. Swagger Editor :基于浏览器的在线编辑器,可以在里面编写 Open API规范,和Markdown类似具有实时预览描述文件的功能。
B. Swagger UI:将OAS呈现为交互式 API 文档,用可视化的方式展示描述文件。
C. Swagger Codegen:将OAS生成为服务器存根和客户端库。通过 Swagger Codegen 可以将描述文件生成 html 格式和 cwiki 形式的接口文档,同时也可以生成多种言语的客户端和服务端代码。
D. Swagger Inspector:和 Swagger UI 有点类似,但是可以返回更多信息,也会保存请求的实际参数数据。
E. Swagger Hub:集成了上面所有项目的各个功能,你可以以项目和版本为单位,将你的描述文件上传到 Swagger Hub 中。在 SwaggerHub 中可以完成上面项目的所有工作,需要注册账号,分免费版和收费版。

OpenAPI 是什么?

在浏览SWAGGER官网的时候,会看到OpenAPI,那它是什么呢,为什么使用它呢?
在这里插入图片描述在这里插入图片描述
Open API 规范(OpenAPI Specification)以前叫做 Swagger 规范,是REST API 的 API 描述格式。OpenAPI 规范(OAS)为 RESTful API 定义了一个与语言无关的标准接口,允许人和计算机发现和理解服务的功能,而无需访问源代码、文档或通过网络流量检查。正确定义后,消费者可以使用最少量的实现逻辑来理解远程服务并与之交互,文档生成工具可以使用 OpenAPI 定义来显示 API。

Springfox是什么?

当我们使用SWAGGER2的时候,经常是如下这样使用的,那Springfox是干什么的呢?

<!-- Swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- Swagger UI -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

Springfox是一个通过扫描代码提取代码中相关信息并生成API文档的工具。API文档的格式不止Swagger的OpenAPI Specification规范,还有RAML、JSONAPI等规范,Springfox的目标同样包括支持这些格式。也就是说springfox-swagger2是Springfox对Swagger的支持。

SWAGGER-UI是什么?

SWAGGER-UI就是接口文档的可视化界面,主要用于展示接口数据、调测试接口和查看接口信息等内容。

①. 依赖引入

<!-- Swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<!-- Swagger UI -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

②. 开启SWAGGER

@Configuration
@EnableSwagger2
public class SwaggerConfig {
	...
}

③. 添加注解

在 Controller上添加相关的 @Api 注解:

(1)@Api,标注在类上用来描述整个 Controller 信息;
(2)@ApiOperation,标注在方法上,用来描述一个方法的基本信息;
(3)@ApiImplicitParam,标注在方法上,用来描述方法的参数。
	其中 paramType 是指方法参数的类型,有如下可选值:
	path:  参数获取方式为 @PathVariable
	query: 参数获取方式为 @RequestParam
	header:参数获取方式为 @RequestHeader
	body
	form
(4)如果有多个参数,可以将多个参数的 @ApiImplicitParam 注解放到 @ApiImplicitParams 中;
(5)@ApiResponse 是对响应结果的描述。code 表示响应码,message 为相应的描述信息,
	如果有多个 @ApiResponse,则放在一个 @ApiResponses 中;
(6)@ApiIgnore 注解表示不对某个接口生成文档。
@RestController
@RequestMapping("/advert")
@Api(value = "广告管理", description = "提供对广告对象的增删改查")
public class SysAdvertController extends BaseController {
    @Autowired
    private ISysAdvertService advertService;

    @Autowired
    private RemoteFileService remoteFileService;

    /**
     * 查询广告信息列表
     */
    @ApiOperation(value = "查询广告信息列表", notes = "根据不同的参数获取广告信息列表")
    @PreAuthorize(hasPermi = "system:advert:list")
    @GetMapping("/list")
    public TableDataInfo list(SysAdvert advert) {
        startPage();
        List<SysAdvert> list = advertService.selectAdvertList(advert);
        return getDataTable(list);
    }

    /**
     * 导出广告信息列表
     */
    @ApiOperation(value = "导出广告信息列表", notes = "根据不同的参数导出广告信息列表")
    @PreAuthorize(hasPermi = "system:advert:export")
    @Log(title = "广告信息", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    public void export(HttpServletResponse response, SysAdvert advert) throws IOException {
        List<SysAdvert> list = advertService.selectAdvertList(advert);
        ExcelUtil<SysAdvert> util = new ExcelUtil<SysAdvert>(SysAdvert.class);
        util.exportExcel(response, list, "advert");
    }

    /**
     * 获取广告信息详细信息
     */
    @ApiOperation(value = "根据ID获取广告信息对象", notes = "根据ID获取广告信息对象")
    @PreAuthorize(hasPermi = "system:advert:query")
    @GetMapping(value = "/{advertId}")
    public AjaxResult getInfo(@PathVariable("advertId") Long advertId) {
        return AjaxResult.success(advertService.selectAdvertById(advertId));
    }

    /**
     * 新增广告信息
     */
    @ApiOperation(value = "新增广告信息对象", notes = "新增广告信息对象")
    @PreAuthorize(hasPermi = "system:advert:add")
    @Log(title = "广告信息", businessType = BusinessType.INSERT)
    @PostMapping
    public AjaxResult add(@RequestBody SysAdvert advert) {
        return toAjax(advertService.insertAdvert(advert));
    }

    /**
     * 修改广告信息
     */
    @ApiOperation(value = "修改广告信息对象", notes = "修改广告信息对象")
    @PreAuthorize(hasPermi = "system:advert:edit")
    @Log(title = "广告信息", businessType = BusinessType.UPDATE)
    @PutMapping
    public AjaxResult edit(@RequestBody SysAdvert advert) {
        return toAjax(advertService.updateAdvert(advert));
    }

    /**
     * 删除广告信息
     */
    @ApiOperation(value = "批量删除广告信息对象", notes = "根据IDS批量删除广告信息对象")
    @PreAuthorize(hasPermi = "system:advert:remove")
    @Log(title = "广告信息", businessType = BusinessType.DELETE)
    @DeleteMapping("/{advertIds}")
    public AjaxResult remove(@PathVariable Long[] advertIds) {
        return toAjax(advertService.deleteAdvertByIds(advertIds));
    }

    /**
     * 广告图片上传
     */
    @PreAuthorize(hasPermi = "system:advert:edit")
    @Log(title = "上传广告图片", businessType = BusinessType.UPDATE)
    @PostMapping("/upload")
    @ApiOperation(value = "上传广告图片", notes = "上传广告图片")
    public AjaxResult avatar(@RequestParam("img") MultipartFile file) throws IOException {
        if (!file.isEmpty()) {
            R<SysFile> img = remoteFileService.upload(file);
            if (StringUtils.isNull(img) || StringUtils.isNull(img.getData())) {
                return AjaxResult.error("文件服务异常,请联系管理员");
            }
            String url = img.getData().getUrl();
            if (null != url) {
                AjaxResult ajax = AjaxResult.success();
                ajax.put("imgUrl", url);
                return ajax;
            }
        }
        return AjaxResult.error("上传图片异常");
    }
}

在实体对象上添加相关的 @ApiModel 注解:

@ApiModel(value = "广告实体对象", description = "广告信息描述对象")
public class SysAdvert extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @ApiModelProperty(value = "广告ID")
    private Long advertId;

    /**
     * 广告标题
     */
    @Excel(name = "广告标题")
    @ApiModelProperty(value = "广告标题")
    private String advertTitle;

    /**
     * 广告分类
     */
    @Excel(name = "广告分类")
    @ApiModelProperty(value = "广告分类")
    private Long advertCategory;
}

④. 查看文档

启动服务并查看文档:http://localhost:8080/swagger-ui.html

springboot2与springboot3集成Knife4j spring2与springboot3快速集成Knife4j 阅读详情

相关推荐

SpringBoot2.x系列教程(五十三)SpringBoot2.x集成swagger2配置权限认证参数Authorize

在使用swagger2时,如果api接口需要token等权限认证内容,那么此时可以有两种方案进行解决:方案一,每个请求上面都添加对应token的key和value值。方案二:全局统一添加权限认证的token。 一般情况下token都存放在header中。 引入swagger2依赖 引入对应的swagger2依赖: <dependency> <groupId>io.s...

程序新视界 5121

Spring Boot整合Swagger2详解

Spring Boot整合Swagger2详解

Charge8的博客 1万+

TC275-AutoSAR实战:Davinci Cfg多核OS配置与调试技巧

本文详细介绍了在TC275芯片上使用Davinci Cfg工具进行AutoSAR多核操作系统配置的实战步骤与调试技巧。内容涵盖从导入arxml文件的常见“坑”开始,到配置Det、EcuC、创建多核OS实例、关联OS应用、创建任务与设置优先级调度,最后分享了利用Det日志、调试器多核视图及处理核间通信与缓存一致性等关键调试方法,旨在帮助开发者高效完成复杂车载ECU软件集成。

weixin_29219189的博客 491

Swagger2使用教程

swagger2使用教程

小张的博客 728

通俗傻瓜式理清光栅化渲染和光线追踪渲染的原理

用通俗语言傻瓜式的讲清楚光栅渲染和光线追踪渲染的原理,方便没有相关理论基础的朋友理解入门。

qq_37366618的博客 2万+

Zephyr内核——内存管理——内存堆

Zephyr提供了一组允许线程动态分配内存。

wayne2018的博客-心情驿站 773

springboot 集成 Swagger2(速通)

一杯奶茶的时间学会在springboot中使用swagger2

m0_54355172的博客 4016

基于深度学习的垃圾邮件识别

垃圾邮件的大量存在严重威胁着电子邮件系统的安全和效率。基于深度学习的垃圾邮件识别技术已经成为目前最有效的解决方案之一。本文将详细介绍使用深度学习技术进行垃圾邮件识别的方法,并提供相应的代码实现。 随着电子邮件的广泛应用,垃圾邮件的数量不断增加,传统的规则和统计方法已经无法满足对垃圾邮件进行准确识别的需求。深度学习技术以其强大的模式识别能力和自动特征提取能力成为解决垃圾邮件识别难题的有效工具。

一键难忘的博客 1095

SpringBoot企业开发: Swagger2

Swagger2: 减少与其他团队的沟通成本,构建RESTFUL API文档来描述所有的接口信息 接口众多,编写RESTFUL API文档工作量大。文档包含接口的基本信息和HTTP请求类型、HTTP请求头、请求参数类型、返回值类型、所需权限 维护不方便,接口变化则需要修改文档 接口测试不方便,需要postman等工具 Swagger2是一个开源的软件框架,帮助设计、构建、记录、使用REST...

手写我对你的温柔 542

灰质-白质组织对比(Gray-white matter tissue contrast,GWC)计算以及可视化

GWC是深层灰质与浅表白质(superficial white matter,SWM)之间T1加权信号强度的比值,已知髓鞘中的胆固醇是T1加权信号强度的主要影响因素,因此GWC大致反映了大脑皮层和浅表白质之间的髓鞘化差异。GWC代表灰白质交界处的模糊程度,较低的GWC表明灰质和白质交界处更相似和更模糊;较高的GWC表明灰白质分界更加清楚。据之前的研究报道,局灶性皮质发育不良、颞叶癫痫、帕金森病、强迫症、精神分裂症和自闭症谱系障碍中存在灰白质交界区GWC异常增高或降低。 灰质信号强度和白质信号强度采集的示意图

xxx 733

AI颠覆市场调研:生成式智能体如何重构商业决策?

AI正在将市场调研从"成本中心"转变为"战略武器"。当企业能够用生成式智能体实时模拟百万级虚拟用户时,传统调研的样本偏差、时间滞后、成本高昂等问题将不复存在。对于开发者而言,这不仅是技术的狂欢,更是参与商业规则重构的历史机遇。行动建议立即体验Simile/Aaru的智能体平台,验证虚拟样本效果参与LLM持续性记忆架构的开源项目(如Memory Llama)关注AI调研API的标准化进程(如Hugging Face的Market Research Toolkit)

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 616

SpringBoot 集成 swagger2使用,一看就会的那种

Swagger是一个流行的API开发框架,用于生成、描述、调用和可视化REST风格的Web服务,这个框架以“开放API声明”为基础,对整个API的开发周期都提供了相...

独泪了无痕 264

paddle 43 用onnxruntime实现ppyoloe模型的部署(含python和c++版本)

PP-YOLOE+是PP-YOLOE模型的升级版,PP-YOLOE+_l在COCO test-dev2017达到了53.3的mAP, 同时其速度在Tesla V100上达到了78.1 FPS。PP-YOLOE+_s/m/x同样具有卓越的精度速度性价比。paddle官方只给出了基于paddle框架的部署案例,为了更好的部署,为此实现将paddle模型转换为onnx模型,然后在python下实现onnxruntime部署。后续会补充c++ onnxruntime部署

a486259的博客 1916

springboot集成swagger2详细使用,一看就会的那种

目录 背景 之前做项目的使用,由于是前后端分离开发,后端开发完成以后需要和前端联调,使用swagger可以保证接口和项目中的代码是最新的,下面介绍swagger的使用111 在pom文件引入相关的依赖 <!--swagger2的jar包--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId.

qq_29751083的博客 1362

使用阿里天池平台训练YOLO目标检测模型

YOLO算法是一种单阶段目标检测算法,由Joseph Redmon等人于2015年提出。与传统的两阶段检测算法相比,YOLO将目标检测问题转化为回归问题,直接预测边界框的位置和类别概率,大大提高了检测速度。YOLOv1: 首次提出YOLO的核心思想,将图像分割成网格,每个网格预测边界框和类别概率。YOLOv2: 引入了批量归一化、锚框等改进,提高了检测精度。YOLOv3: 采用多尺度预测,增强了对小目标的检测能力。

步子哥的博客 1091

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SpringBoot集成swagger2

第一步:导入依赖 <!--swagger--> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> <!--swagger ui--> <dependen

qq_42368540的博客 294

ssm框架搭建

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

Springboot集成swagger2(一)接口管理框架

Spring boot集成swagger构建接口管理文档 一,swagger简介 swagger是一个工具,用于自动生成web网站对外提供的服务接口文档,并且以web页面的形式进行展示。 优势:可以自动生成API文档  ,能降低前后端的沟通成本。 二,项目的基本结构 三,idea项目构建思路 3.1pom依赖 &lt;?xml version="1.0" encodin...

佐杰的博客 314

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

springboot集成swagger2页面出现swagger-resources404

访问/doc.html出现页面,但是没有接口文档,查看页面元素发现问题: /swagger-resources 404 /swagger-resources/configuration/ui 404我是springboot项目,分模块,common包,api包,manager包,swagger配置放到common包下 1.查看配置是否缺失,看着都有 2.查看版本号,看着没啥问题 3.网上也查过,看到说增加资源路径配置,我也加了 问题解决 启动类上没加注解:@EnableSwagger2 导致的问题 我尝试了

xiaozhuyehuifanqiang的博客 6101

13.9 SpringBoot集成Swagger2中遇到的问题

13.9 SpringBoot集成Swagger2中遇到的问题 我们在使用SpringBoot集成Swagger2中,访问:http://127.0.0.1:8188/swagger-ui.html 问题描述 可能出现两种错误: 1.页面显示默认报错页面。后台报错: No handler found for GET /swagger-ui.html 2....

AI天才研究院 8797

Swagger与SpringBoot冲突

集成Swagger时报错,网络上的解决方案不能成功解决

Tobieance的博客 472

springboot集成swagger2总结

写这篇博客的初衷是为了总结自己在学习中所遇到的问题,给予后来者以提示。 至于springBoot如何集成swagger2大家可以参考这篇文章,本博客只记录自己在学习的过程遇到的问题以及是如何解决的。 问题1:        集成swagger2以后,在本地访问http://localhost:8080/swagger-ui.html时,页面并没有自动生成相应的接口。如下图: 经过排查发...

abner135的博客 4295

swagger2 集成无效_13.9 SpringBoot集成Swagger2中遇到的问题

13.9 SpringBoot集成Swagger2中遇到的问题问题描述可能出现两种错误:1.页面显示默认报错页面。后台报错:No handler found for GET /swagger-ui.html2.显示Swagger空白页面:后台报错:No mapping found for HTTP request with URI [/swagger-resources/configuration...

weixin_39883433的博客 340

SpringBoot集成Swagger2中遇到的问题

原文:http://www.jianshu.com/p/840320d431a1 参考: http://www.jianshu.com/p/8033ef83a8ed SpringBoot集成Swagger2中遇到的问题 我们在使用SpringBoot集成Swagger2中,访问:http://127.0.0.1:8188/swagger-ui.html 问题描

米斯特程序猿 1万+

springboot 集成Swagger2报错 Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is

springboot 集成Swagger2报错 Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException

chunhev5的博客 820

SpringBoot集成swagger-ui以及swagger分组显示

大家好,这篇文章展示下如何在springboot项目中集成swagger-ui。有人说,这都是老生常谈,网上的例子数不胜数。确实swagger诞生至今已经很久了,但是在使用过程中我遇到一个问题,下面给大家分享下我的使用心得吧。 1.swagger配置类 第一步,需要在pom中引入相应的配置,这里使用2.7.0的版本。需要注意的是2.7.0和2.8.0的版本在界面风格上差异很大,如果感兴趣,可以试试...

程序员青戈 6万+

SpringBoot集成Swagger2

本章节主要介绍SpringBoot项目集成Swagger2的一些相关知识,包括集成版本、依赖、集成方式、以及简单的使用。官方提供的SwaggerUI太low,本篇集成了knife4j,在可视化方面有了大大的提示,操作更加人性化。Swagger是一个restful规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的 工具。在后端服务定义好参数格式以及方法,启动服务后网页即可访问接口信息文档 ,并且在网页端可进行接口测试。Swagger让部署管理和使用功能强大的API变得非常简单。 2.代码配置

Oaklkm的博客 5987
上一篇: JAVA基础 - JAVA中经常使用的日志框架有哪些?
下一篇: JAVA基础 - BYTEBUFFER是什么?
cloneme01
博客等级 码龄20年 2万+粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cloneme01

谢谢您的支持与鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值