SpringBoot集成Swagger

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

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

这里介绍一下spring boot和swagger基本的集成:

  1. 引入jar
<!--Swagger-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.4.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.4.0</version>
</dependency>

springfox的前身是springmvc-swagger这样的一个框架(大概是这个名字),都是做springMVC和swagger集成的。

2.Swagger配置

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;

/**
 * author: FrancisZ
 * time: 16/5/6
 */
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {

    @Value("${swagger.show}")
    private boolean swaggerShow;

    /**
     * 可以定义多个组,比如本类中定义把test和demo区分开了
     * (访问页面就可以看到效果了)
     *
     */
    @Bean
    public Docket testApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(this.swaggerShow)
                .groupName("test")
                .genericModelSubstitutes(DeferredResult.class)
//                .genericModelSubstitutes(ResponseEntity.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(true)
                .pathMapping("/")// base,最终调用接口后会和paths拼接在一起
                .select()
                .paths(or(regex("/test/.*")))//过滤的接口
                .build()
                .apiInfo(testApiInfo());
    }

    @Bean
    public Docket demoApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .enable(this.swaggerShow)
                .groupName("demo")
                .genericModelSubstitutes(DeferredResult.class)
//              .genericModelSubstitutes(ResponseEntity.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(false)
                .pathMapping("/")
                .select()
                .paths(or(regex("/demo/.*")))//过滤的接口
                .build()
                .apiInfo(demoApiInfo());
    }

    private ApiInfo testApiInfo() {
        ApiInfo apiInfo = new ApiInfo("IAP API",//大标题
                "Internal Application Platform.",//小标题
                "0.1",//版本
                "NO terms of service",
                "603005981@qq.com",//作者
                "The Apache License, Version 2.0",//链接显示文字
                "http://www.apache.org/licenses/LICENSE-2.0.html"//网站链接
        );

        return apiInfo;
    }

    private ApiInfo demoApiInfo() {
        ApiInfo apiInfo = new ApiInfo("IAP API",//大标题
                "Internal Application Platform.",//小标题
                "0.1",//版本
                "NO terms of service",
                "603005981@qq.com",//作者
                "The Apache License, Version 2.0",//链接显示文字
                "http://www.apache.org/licenses/LICENSE-2.0.html"//网站链接
        );

        return apiInfo;
    }
}

这部分我也没有深究,具体每部分内容对应页面上那些部分,多试试吧。

3.MVC Configuration


/**
 * author: FrancisZ
 * time: 16/4/5
 */
@Configuration
public class MVCConfiguration extends WebMvcConfigurerAdapter {
    @Value("${swagger.show}")
    private boolean swaggerShow;

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        if (this.swaggerShow) {
            registry.addResourceHandler("swagger-ui.html")
                    .addResourceLocations("classpath:/META-INF/resources/");

            registry.addResourceHandler("/webjars/**")
                    .addResourceLocations("classpath:/META-INF/resources/webjars/");
        }
    }
}

这边添加的两个ResourceHandler主要是指定swagger ui的地址,不然的话无法访问swagger的页面。

4.添加一个简单的API

@RequestMapping(value = "/Permission/list/Role/{roleId}", produces = "application/json;charset=utf-8", method = RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value = "获取角色权限", httpMethod = "GET", response = String.class, notes = "获取角色的所有权限")
    @ApiParam(required = true, name = "roleId", value = "角色ID")
    public String getRolePermissions(@PathVariable("roleId") Integer roleId) {
        Iterable<PermissionDto> permissionDtoList = this.permissionService.getByRole(roleId);
        Map<String, Object> resultMap = new HashMap<String, Object>();
        resultMap.put("code", "0");
        resultMap.put("data", permissionDtoList);
        String result = JSONObject.toJSONString(resultMap);
        return result;
    }

这里主要是两个注解,@ApiOperation和@ApiParam。可以看出来一个是对API的描述,一个是对API参数的描述。

@ApiIgnore注解标明这个API不想被swagger处理,默认情况下只要被@RequestMapping注解的方法都会被生成文档(没有详细测试)。

5.Swagger路由问题

Swagger带来的好处是巨大的,但是在生产环境并不需要看到接口文档,这反倒有一些安全问题。对于这个问题,第一反应是加权限,不过仔细想想的话,即使是在校验了权限之后,在生产环境也不应该看到接口文档。而且加权限的话还需要其他的工作量。

这里提供的一个办法是通过配置参数,控制Swagger路由。在Spring Boot的配置文件中添加swagger.show这个参数,只有当值为true的时候才生成swagger的路由,以及让swagger初始化(具体做法可以参考上面第2,3两步中swaggerShow这个参数的使用)。测试下来,这个办法是能比较彻底屏蔽Swagger的。

以上。

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

相关推荐

SpringBoot-集成Swagger

五、配置Swagger自定义扫描接口5.1 默认状态我们在这个ui界面中,可以看到扫描了两个。

2501_90249203的博客 1297

Springboot集成Swagger

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

weixin_51351637的博客 1万+

SpringBoot集成Swagger框架

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

2301_76592091的博客 1384

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

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

lsqingfeng的博客 8万+

【探秘】二维异形件重叠移除算法:从度量到消除的实战解析

本文深入解析二维异形件重叠移除算法的核心技术与实战应用,涵盖重叠度量、零件扰动策略及消除方法。通过NFP(临界多边形)技术、空间分区加速等优化手段,有效解决异形件排版中的重叠问题,提升材料利用率和计算效率。适合制造业、CAD软件开发者及算法工程师参考。

weixin_28698059的博客 251

Unity Shader学习笔记/Urp/水墨风效果

Unity Shader学习

qq_63133691的博客 2117

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

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

程序员青戈 6万+

【MATLAB/Simulink】从模型到飞行:基于PX4与Rflysim的无人机MBD实战指南

本文详细介绍了基于MATLAB/Simulink与PX4、Rflysim的无人机模型开发与飞行控制实战指南。通过MBD(基于模型设计)方法,从建模、仿真到代码生成与硬件部署,实现无人机开发的高效闭环。文章涵盖开发环境搭建、动力学建模、控制算法实现及测试验证全流程,为无人机开发者提供实用技巧与优化建议。

weixin_30181209的博客 410

【Spring Boot】Swagger集成springboot

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

高朗的博客 366

将点云坐标转换成世界坐标的demo

将点云坐标转换成世界坐标的demo

howard789的博客 2206

用RFSoC ZU47DR搭建软件无线电原型:从零配置Vivado到生成第一个射频信号

本文详细介绍了如何使用Xilinx RFSoC ZU47DR开发板搭建软件无线电原型系统,从Vivado环境配置到生成首个射频信号的全流程。通过整合ARM处理器、FPGA逻辑和高速ADC/DAC,该平台为通信算法验证提供了高效解决方案,特别适合SDR开发者和通信工程师快速实现原型设计。

weixin_26763955的博客 589

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

加密算法:深度解析Ed25519原理

在 Solana 开发过程中,我一直对 Ed25519 加密算法 如何生成公钥、签名以及验证签名的机制感到困惑。为了弄清这一点,我查阅了大量相关资料,终于对其流程有了更清晰的理解。在此记录实现过程,方便日后查阅。

盹猫的博客 1万+

SpringBoot项目下集成Swagger

springboot项目集成swagger

weixin_46171048的博客 2343

196、NPU的编译器开发:教程与示例代码编写

NPU编译器开发实战指南 摘要:本文分享了NPU编译器开发中的核心挑战与实战经验,通过具体代码示例展示了关键实现技术: 指令生成:必须考虑硬件特性(如地址对齐)和芯片配置抽象化 图优化:重点处理常见冗余结构(Reshape合并、BN融合),并注意数值稳定性 算子拆分:采用分块计算策略适配有限SRAM,需特别注意边界条件处理 内存分配:基于张量使用频率的贪心算法优化SRAM使用效率 文中包含多个真实踩坑案例: DMA地址未对齐导致硬件错误 BN融合时的除零风险 tile边界处理不当引起的精度下降 这些经验为开

m0_50546716的博客 78

【传感器模块项目实战】机器人/无人驾驶常用传感器模型、选型与安装

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!无人车&无人机导航合集本文先对机器人/无人驾驶常用传感器模型、选型与安装做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容分为位置式绝对型编码器增量式编码器打比赛的时候用过欧姆龙的增量式编码器,也用过待编码器的步进电机。【防盗标记–盒子君hzj】增量式编码器正交编码输出信号,用于识别正转和反转,通过微控制器(单片机)的片内外设硬件/软件解码(1)惯性器件-机械陀螺。

qq_35635374的博客 446

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

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

从零学spring boot-springboot集成swagger

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

mazhen1991的博客 1324

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SpringBoot集成Swagger2

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

东风麦芽糖 2355

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

springboot 集成swagger 步骤

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

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

Spring Boot 集成 Swagger 简易教程

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

happyJared 2679
上一篇: Spring Boot入门(连接MySQL, Redis 输出JSP)
下一篇: Kibana4动态指定index pattern
java_4_ever
博客等级 码龄16年 8粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值