SpringBoot集成Swagger

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

Java知识点总结:想看的可以从这里进入

2.17、Swagger

2.17.1、简介

现在的编程从后端时代向逐渐编程后端分离的时代,前后端通过API接口进行交互,前后端相对独立,于是Swagger就产生了,它是一个简单但功能强大的API表达工具,号称最流行的API框架。使用Swagger生成API,我们可以得到交互式文档,自动生成代码的SDK以及API的发现特性等。

Swagger官网

Vue+Springboot 是现今主流的前后端分离的方案。

2.17.2、常用注解

Swagger提供的注解是用在Controller、实例类上对接口的和实体类的属性进行说明,这些说明可以显示在Swagger 的操作页面上,帮助我们理解使用。

  1. @Api(tags=“Restful风格测试”):用在controller类上,标记一个controller类为swagger的文档资源

    属性:tags=“说明该类的作用,可以在UI界面上看到的注解” value=“该参数没什么意义,在UI界面上也看到,所以不需要配置”

    image-20210908180201905
  2. @ApiModel(value = “User实体类”,description =“存放用户的数据” ):用在实体类上,对类进行说明

    image-20210908180532117
  3. @ApiModelProperty(value=“描述信息”):用在属性上,描述属性的作用

    image-20210908180907084
  4. @ApiParam(value=“描述”,required = true):用在controller方法的参数前,描述该参数的作用,required 为true是表示该参数必须传递

    image-20210908181140793
  5. @ApiOperation(value = "):用在controller方法上,描述该方法的作用

    value=“说明方法的用途、作用” notes=“方法的备注说明”

    image-20210908181607635
  6. @ApiResponses:用在controller的方法上,描述接口相应的相关信息

    @ApiResponses({
            @ApiResponse(code = 0,message = "相应成功",response = User.class),
            @ApiResponse(code = 状态码,message = "结果",response = 操作的对象)
    })	
    
    image-20210908182055570
  7. @ApiImplicitParams:用在方法,用于描述方法内的参数的信息,可以设置默认值

    @ApiImplicitParams({
            @ApiImplicitParam(name = "id",value = "用户的id",dataType = "int" ,
                    paramType = "用于查询",required = true,defaultValue = "1"),
        	@ApiImplicitParam(name = "参数名",value = "作用",dataType = "数据类型" 
                    paramType = "用于什么操作",required = 是否必须传递,defaultValue = "默认值"),
    })
    
2.17.3、Swagger2集成
  1. 导入pom依赖 springfox-swagger2、springfox-swagger-ui

    <!--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. 在配置文件中添加:(SpringBoot2.6及其以上版本启动swagger2.9.2会保错,所有需要添加一下配置)

    spring:  
      mvc:
        pathmatch:
          matching-strategy: ANT_PATH_MATCHER
    
  3. 配置swagger的config 配置类

    @Configuration
    @EnableSwagger2		//swagger2注解
    public class Swagger2Config {
    //配置swagger
        @Bean
        public Docket docket(Environment environment){
            //获取当前的环境配置
            Profiles profiles = Profiles.of("dev");
            //通过环境变量判断是否符合需要的环境
            boolean b = environment.acceptsProfiles(profiles);
            log.info("当前的环境:{}",b);
            
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())     //配置信息
                    .select()
                        //扫描接口的方式:basePackage(根据包),any(扫描全部),none(都不扫描),
                        // withClassAnnotation(扫描类上的注解),withMethodAnnotation(方法上的注解)
                        .apis(RequestHandlerSelectors.basePackage("com.yu.springbootdemo.controller"))
                        //对指定的路径进行监视:PathSelectors.any()所有的,none()都不监视,ant(final String antPattern):匹配Ant样式的路径模式
                		 .paths(PathSelectors.any())
                    .build()     //添加select内的配置,select的结束
                    .enable(b)   //是否开启swagger,根据开发环境判断是否开启
                    .groupName("A")   //配置一个分组,多人开发,有多个docket,通过分组查找个人的
                    ;
        }
    
        //配置swagger基础信息,apiInfo
        //(title,description,version,termsOfServiceUrl,contact,license,licenseUrl)
        public ApiInfo  apiInfo(){
            //作者信息
            Contact contact = new Contact("","","");
            return new ApiInfoBuilder()
                    .title("标题:测试swagger")      //title标题
                    .description("测试文档")     //description描述
                    .version("1.0")          //version版本
                    .termsOfServiceUrl("aaaa")     //服务路径
                    .contact(contact)           //contact 作者信息
                    .license("Apache 2.0")      //许可证
                    .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0")   //许可证路径
                    .build();
        }
    }
    
  4. 如果配置了shiro、SpringSecurity等权限框架,需要在安全框架内部对swagger的一些默认路径放行

    //swagger2放行
    filterMap.put("/swagger-ui.html", "anon");
    filterMap.put("/swagger-resources", "anon");
    filterMap.put("/swagger-resources/configuration/security", "anon");
    filterMap.put("/swagger-resources/configuration/ui", "anon");
    filterMap.put("/v2/api-docs", "anon");
    filterMap.put("/webjars/springfox-swagger-ui/**", "anon");
    
    .antMatchers("/swagger-ui.html").permitAll()
        .antMatchers("/swagger-resources/**").permitAll()
        .antMatchers("/webjars/**").permitAll()
        .antMatchers("/v2/api-docs").permitAll()
    
  5. 如果配置了WebMvcConfigurer,也需要对swagger路径进行放行

    @Configuration
    public class WebMvcConfigure implements WebMvcConfigurer {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
            registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    }
    
  6. 编写Controller 进行测试

    @Api(tags = "swagger测试")
    @Controller
    public class PageController {
        @ApiOperation(value = "hello测试", notes = "访问此接口返回hello springboot ")
        @PostMapping("/hello")
        @ResponseBody
        public String hello(){
            return "hello springboot";
        }
    }
    
  7. 访问 http://localhost:8080/swagger-ui.html

    image-20221006165346106

    image-20221006165406508

    image-20221006165653232

2.17.4、Swagger3集成

Swagger3在 2 的基础上做了很大的升级,但使用的方式差别不大,只是其中有些配置不同

区别swagger2swagger3
依赖springfox-swagger2、springfox-swagger-uispringfox-boot-starter
启动注解@EnableSwagger2@EnableOpenApi
Document类型DocumentationType.SWAGGER_2DocumentationType.OAS_30
网址http://ip:port/{context-path}/swagger-ui.htmlhttp://ip:port/{context-path}/swagger-ui/index.html
  1. 导入pom依赖 ()

    <!--Swagger3的依赖-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-boot-starter</artifactId>
        <version>3.0.0</version>
    </dependency>
    
    
  2. 在配置文件中添加:防止版本问题启动失败

    spring:  
      mvc:
        pathmatch:
          matching-strategy: ANT_PATH_MATCHER
    
  3. 配置swagger的config 配置类

    @Configuration
    @EnableOpenApi		//swagger3注解
    public class Swagger2Config {
    //配置swagger
        @Bean
        public Docket docket(Environment environment){
            //获取当前的环境配置
            Profiles profiles = Profiles.of("dev");
            //通过环境变量判断是否符合需要的环境
            boolean b = environment.acceptsProfiles(profiles);
            log.info("当前的环境:{}",b);
            //DocumentationType.SWAGGER_2 改为 DocumentationType.OAS_30
            return new Docket(DocumentationType.SWAGGER_2)
                    .apiInfo(apiInfo())     //配置信息
                    .select()
                        //扫描接口的方式:basePackage(根据包),any(扫描全部),none(都不扫描),
                        // withClassAnnotation(扫描类上的注解),withMethodAnnotation(方法上的注解)
                        .apis(RequestHandlerSelectors.basePackage("com.yu.springbootdemo.controller"))
                        //对指定的路径进行监视:PathSelectors.any()所有的,none()都不监视,ant(final String antPattern):匹配Ant样式的路径模式
                		 .paths(PathSelectors.any())
                    .build()     //添加select内的配置,select的结束
                    .enable(b)   //是否开启swagger,根据开发环境判断是否开启
                    .groupName("A")   //配置一个分组,多人开发,有多个docket,通过分组查找个人的
                    ;
        }
    
        //配置swagger基础信息,apiInfo
        //(title,description,version,termsOfServiceUrl,contact,license,licenseUrl)
        public ApiInfo  apiInfo(){
            //作者信息
            Contact contact = new Contact("","","");
            return new ApiInfoBuilder()
                    .title("标题:测试swagger3")      //title标题
                    .description("测试文档")     //description描述
                    .version("1.0")          //version版本
                    .termsOfServiceUrl("aaaa")     //服务路径
                    .contact(contact)           //contact 作者信息
                    .license("Apache 2.0")      //许可证
                    .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0")   //许可证路径
                    .build();
        }
    }
    
  4. 如果配置了shiro、SpringSecurity等权限框架,需要在安全框架内部对swagger3 的一些默认路径放行

    //swagger2放行
    filterMap.put("/swagger-ui/index.html", "anon");
    filterMap.put("/swagger-resources", "anon");
    filterMap.put("/swagger-resources/configuration/security", "anon");
    filterMap.put("/swagger-resources/configuration/ui", "anon");
    filterMap.put("/v2/api-docs", "anon");
    filterMap.put("/webjars/springfox-swagger-ui/**", "anon");
    
    .antMatchers("/swagger-ui/index.html").permitAll()
        .antMatchers("/swagger-resources/**").permitAll()
        .antMatchers("/webjars/**").permitAll()
        .antMatchers("/v2/api-docs").permitAll()
    
  5. 如果配置了WebMvcConfigurer,也需要对swagger3 路径进行放行

    @Configuration
    public class WebMvcConfigure implements WebMvcConfigurer {
    
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/static/**").addResourceLocations(ResourceUtils.CLASSPATH_URL_PREFIX + "/static/");
            registry.addResourceHandler("swagger-ui/index.html").addResourceLocations("classpath:/META-INF/resources/");
            registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    }
    
  6. 编写Controller 进行测试

    @Api(tags = "swagger3测试")
    @Controller
    @RequestMapping("/restfulTest")
    public class RestfulTestController {
    
        @Resource
        private UserinfoService userinfoService;
    
    
        @ApiOperation(value = "获取用户信息", notes = "访问此接口返回userinfo信息")
        @GetMapping("/getUserinfo/{id}")
        @ResponseBody
        public Userinfo getUserinfo(@PathVariable("id")long id){
            return userinfoService.getById(id);
        }
    
    
    }
    
  7. 访问 http://localhost:8080/swagger-ui/index.html

    image-20230309205444594 image-20230309205529654 image-20230309205607795
SpringBoot整合Swagger超详细完整指南 本文详细介绍了Swagger在SpringBoot项目中的完整应用指南,主要内容包括: 技术选型与版本对比:比较Springfox与SpringDoc两种实现方案,并提供版本兼容性矩阵 项目配置: 详细的环境准备与项目结构设计 Maven依赖配置示例 多环境(开发/生产)配置文件说明 核心功能实现: 基础配置类与Web配置类详解 完整的注解系统指南(Controller/实体类/枚举类) 实体建模与数据传输设计模式(DTO/VO/统一响应) 企业级实践: 用户管理和认证控制器的完整示例 安全认证配置(JWT 阅读详情

相关推荐

Swagger——【SpringBoot集成Swagger、配置Swagger、配置扫描接口、配置API分组】

互联网大厂比较喜欢的人才特点:对技术有热情,强硬的技术基础实力;主动,善于团队协作,善于总结思考。无论是哪家公司,都很重视高并发高可用技术,重视基础,所以千万别小看任何知识。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。下面有部分截图希望能对大家有所帮助。

2401_84047990的博客 1396

Springboot集成Swagger

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

weixin_51351637的博客 1万+

SpringBoot集成Swagger框架

发现了痛点就要去找解决方案。解决方案用的人多了,就成了标准的规范,这就是Swagger的由来。通过这套规范,你只需要按照它的规范去定义接口及接口相关的信息。再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,生成多种语言的客户端和服务端的代码,以及在线接口调试页面等等。这样,如果按照新的开发模式,在开发新版本或者迭代版本的时候,只需要更新Swagger描述文件,就可以自动生成接口文档和客户端服务端代码,做到调用端代码、服务端代码以及接口文档的一致性。

2301_76592091的博客 1384

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

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

lsqingfeng的博客 8万+

Vivado 2018.3 安装步骤及 license 获取

本文的主要内容是介绍 Vivado 2018.3 版本的安装步骤及其 license 的获取与加载。

西岸贤 4万+

Android Qcom USB Driver学习(十三)

该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) Android Qcom USB Driver学习(八) Android Qcom USB Driver学习(九)deals with the USB Power Delivery resources used by one or more ports on the basis of the local device policy the basis of the local device policy.opera

Android驱动开发 2611

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

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

程序员青戈 6万+

BEVFormer vs BEVFusion:5个关键差异点帮你选对环视感知方案

本文深入对比了自动驾驶领域两大主流环视感知方案BEVFormer与BEVFusion。BEVFormer作为纯视觉BEV感知的标杆,通过注意力机制隐式学习深度,成本较低;而BEVFusion作为多模态融合典范,融合激光雷达与摄像头数据,在性能、小目标检测及极端环境鲁棒性上优势显著。文章从计算效率、部署成本、数据依赖性等五个核心维度提供选型指南,帮助技术决策者根据自身算力预算与传感器配置做出明智选择。

weixin_29306011的博客 123

【Spring Boot】Swagger集成springboot

文章目录一、环境配置 一、环境配置 配置springboot-web项目,参考文章:【Spring Boot】快速上手SpringBoot 导入swagger相关依赖: <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-boot-starter</artifactId> &

高朗的博客 366

SpringBoot 教程:SpringBoot多种方式实现静态Html页面跳转

本教程介绍了 Spring Boot 中实现静态 Html 页面跳转的常用方法,包括重定向跳转、直接返回 ModelAndView 对象以及使用 Thymeleaf 模板引擎。如果你的项目中使用了 Thymeleaf 模板引擎,那么可以利用它来实现静态页面的跳转。对于静态的 Html 页面,我们可以使用多种方式来实现跳转功能。重定向是一种常见的页面跳转方式,它通过发送 HTTP 重定向响应头来告知浏览器跳转到指定的页面。在 Spring Boot 中,我们可以将视图名称设置为静态页面的路径。

2301_79325657的博客 2446

ATECC508A芯片开发笔记(三):获取508A串号、随机数源码及I2C抓包分析

ATECC508A芯片开发笔记(三):读取508A串号、获取随机数源码及I2C抓包分析 APP层函数编写及源码分析 At508_GetSernum() GetSernum抓包记录 At508_GetRandom( ) GetRandom抓包记录 经过前两章节,CryptoAuthlib库已经成功适配在代码中了,下面简单测试一下API函数,并分析下I2C通讯流程: APP层函数编写及源码分析利用li

HowieXue 薛永浩的博客 2万+

springboot集成kafka_Spring Boot 集成Swagger

获得技能掌握SpringBoot集成Swagger技能掌握Swagger调试Web应用技能本节对应教学视频 SpringBoot从入门到精通 SSM/MyBatis/Redis/KafKa/SpringCloud​ke.qq.com知识要点使用@EnableSwagger2注解打开Swagger使用SwaggerUI调试Web应用Swagger是一个非常方便的文档和测试工具,Swagger两大核...

weixin_39976413的博客 238

GB28181 —— 1、Ubuntu20.04下使用ZLMediaKit+WVP搭建GB28181流媒体监控平台(连接带云台摄像机)

GB28181 —— Ubuntu20.04下使用ZLMediaKit+WVP搭建GB28181流媒体监控平台

5459

SpringBoot项目下集成Swagger

springboot项目集成swagger

weixin_46171048的博客 2342

超详细教程YoloV8官方推荐免费数据集网站Roboflow一键导出Voc、COCO、Yolo、Csv等格式

YoloV8官方推荐了一个数据集网站,就是Roboflow。Roboflow是一个数据集管理平台,提供了免费的数据集,同时也支持上传自己的数据集进行格式转换。使用Roboflow,开发者可以方便地获取所需格式的数据集,无需手动转换格式。此外,Roboflow还提供了多种数据预处理、数据增强等功能,可帮助开发者更好地优化训练数据

Snu77的博客 2万+

Python 爬虫实战:爬取今日头条文章与阅读量数据

本文详细介绍了基于Python爬取今日头条文章与阅读量数据的完整方案。通过分析今日头条API接口,采用Requests+正则表达式技术实现数据抓取,重点解决加密参数构造、请求头模拟、反爬规避等核心问题。文章包含文章列表获取、详情数据提取、互动数据采集等完整流程,并提供数据存储与基础分析方法。同时强调合规使用爬虫技术,控制爬取频率,避免干扰平台运营。该方案可为内容传播分析、用户兴趣研究提供数据支持,但需注意接口参数更新和反爬机制变化,适时调整代码实现。

2503_91057718的博客 2519

Springboot集成Swagger--knife4j和swagger-spring-boot-starter

使用Swagger你只需要按照他的规范去定义接口及接口相关信息再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等。knife4j是JavaMVC框架集成Swagger生成Api文档的增强解决方案。1.导入knife4j的maven坐标(版本如果冲突的话自己用maven helper来exclude一下)2.导入knife4j相关配置类(地址一定要写对!!!,挺多坑的)@Slf4j//设置静态资源映射@Override。

bjjx123456的博客 756

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

从零学spring boot-springboot集成swagger

日常开发中,前后端的开发联调都需要定义一个接口文档,定义接口文档是比较耗时的,这边推荐一款插件来根据接口来自动生成接口文档,并且会根据接口的变化而自动更新,解放一部分开发人力。spring boot集成swagger非常简单,只需要以下四步: 1. 引入swagger依赖 <dependency> <groupId>io.springfox</groupId&...

mazhen1991的博客 1323

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

SpringBoot集成Swagger2

SpringBoot集成Swagger Swagger简介 配置Swagger2 swagger扫描指定的包下的接口 配置多个分组 swagger里的controller方法加注释 Swagger实体类加注释

东风麦芽糖 2355

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

springboot 集成swagger 步骤

使用如下脚手架,创建基础环境,https://start.aliyun.com/bootstrap.html。

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 1233

Spring Boot 集成 Swagger 简易教程

Swagger Swagger号称是史上最流行的、最好用的API接口文档构建工具,它支持多种语言包括Java在内,本文仅关注如何使用Spring Boot来集成Swagger,更多关于Swagger的介绍可以查看以下几个链接。 Swagger - 官网Swagger - Github SpringFox   SpringFox最初叫Swagger-SpringMVC,...

happyJared 2679
上一篇: SpringBoot集成Lombok
下一篇: SpringBoot开启任务(异步任务、定时任务、邮件任务)
辰 羽
博客等级 码龄7年 1521粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值