【Springboot知识】从零开始配置springfox

文章目录

    • 配置过程
      • 1. 添加依赖
      • 2. 创建Swagger配置类
      • 3. 配置Swagger UI
      • 4. 自定义Swagger配置(可选)
        • 4.1 添加全局请求参数
        • 4.2 配置响应消息
      • 5. 运行项目并访问Swagger UI
      • 6. 其他注意事项
      • 7. 使用Springfox 3.x(可选)
      • 总结
    • 忽略登录验证
      • 1. **明确Swagger的相关路径**
      • 2. **配置Spring Security忽略Swagger路径**
        • 示例:配置Spring Security忽略Swagger路径
      • 3. **确保Swagger配置正确**
      • 4. **测试Swagger UI访问**
      • 5. **其他注意事项**
      • 6. **完整示例**
      • 总结

配置过程

在Spring Boot项目中配置Springfox(Swagger)可以帮助你自动生成API文档。以下是详细的配置步骤:

1. 添加依赖

首先,在你的pom.xml文件中添加Springfox的依赖:

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

2. 创建Swagger配置类

接下来,创建一个Swagger配置类来启用Swagger并配置一些基本信息。

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.example.demo")) // 替换为你的控制器所在包.paths(PathSelectors.any()).build().apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Spring Boot Swagger Example API").description("This is a sample API documentation using Swagger").version("1.0.0").build();}
}

3. 配置Swagger UI

Springfox会自动配置Swagger UI,你可以通过以下URL访问Swagger UI界面:

http://localhost:8080/swagger-ui.html

4. 自定义Swagger配置(可选)

你可以根据需要进一步自定义Swagger的配置。例如,添加全局的请求参数、响应消息等。

4.1 添加全局请求参数
import springfox.documentation.service.Parameter;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.schema.ModelRef;@Bean
public Docket api() {ParameterBuilder parameterBuilder = new ParameterBuilder();parameterBuilder.name("Authorization").modelRef(new ModelRef("string")).parameterType("header").required(false).build();return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.example.demo")).paths(PathSelectors.any()).build().globalOperationParameters(Collections.singletonList(parameterBuilder.build())).apiInfo(apiInfo());
}
4.2 配置响应消息
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.spi.DocumentationType;@Bean
public Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.example.demo")).paths(PathSelectors.any()).build().useDefaultResponseMessages(false).globalResponseMessage(RequestMethod.GET,Arrays.asList(new ResponseMessageBuilder().code(500).message("Internal Server Error").build(),new ResponseMessageBuilder().code(403).message("Forbidden").build())).apiInfo(apiInfo());
}

5. 运行项目并访问Swagger UI

启动你的Spring Boot项目,然后在浏览器中访问以下URL:

http://localhost:8080/swagger-ui.html

你应该能够看到自动生成的API文档,并且可以通过Swagger UI界面测试你的API。

6. 其他注意事项

  • Spring Boot版本兼容性:确保你使用的Spring Boot版本与Springfox版本兼容。Springfox 2.x 支持Spring Boot 1.x 和 2.x,但如果你使用的是Spring Boot 3.x,可能需要使用Springfox 3.x或更高版本。
  • Spring Security集成:如果你的项目使用了Spring Security,可能需要配置Swagger UI的访问权限。

7. 使用Springfox 3.x(可选)

如果你使用的是Spring Boot 3.x,可以考虑使用Springfox 3.x。配置步骤类似,但依赖和配置类可能会有所不同。

<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version>
</dependency>

然后在配置类中使用@EnableSwagger2WebMvc注解:

import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;@Configuration
@EnableSwagger2WebMvc
public class SwaggerConfig {// 配置内容同上
}

总结

通过以上步骤,你可以在Spring Boot项目中成功配置Springfox(Swagger),并生成API文档。你可以根据需要进一步自定义Swagger的配置,以满足项目的需求。

忽略登录验证

在Spring Boot项目中,如果你希望将Swagger相关的路径(如Swagger UI、API文档等)加入忽略登录的配置,可以通过Spring Security来实现。以下是详细的配置步骤:

1. 明确Swagger的相关路径

Swagger通常涉及以下路径:

  • /swagger-ui.html:Swagger UI界面。
  • /v2/api-docs:Swagger生成的API文档(JSON格式)。
  • /swagger-resources/**:Swagger资源文件。
  • /webjars/**:Swagger UI依赖的静态资源。

这些路径需要被Spring Security忽略,以便无需登录即可访问。

2. 配置Spring Security忽略Swagger路径

在Spring Security配置类中,通过antMatchers方法将这些路径加入白名单,允许匿名访问。

示例:配置Spring Security忽略Swagger路径
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/swagger-ui.html",       // Swagger UI界面"/v2/api-docs",           // Swagger API文档"/swagger-resources/**",  // Swagger资源文件"/webjars/**",            // Swagger UI静态资源"/public/**"              // 其他需要忽略登录的路径).permitAll() // 允许匿名访问.anyRequest().authenticated() // 其他路径需要登录.and().formLogin() // 启用表单登录.and().csrf().disable(); // 禁用CSRF(根据需求决定是否禁用)}
}

3. 确保Swagger配置正确

确保Swagger的配置类已经正确配置,并且能够生成API文档。以下是一个典型的Swagger配置类:

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket api() {return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.basePackage("com.example.demo")) // 替换为你的控制器包名.paths(PathSelectors.any()).build().apiInfo(apiInfo());}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("Spring Boot Swagger Example API").description("This is a sample API documentation using Swagger").version("1.0.0").build();}
}

4. 测试Swagger UI访问

启动Spring Boot项目后,访问以下URL,确保无需登录即可访问Swagger UI:

  • Swagger UI界面:http://localhost:8080/swagger-ui.html
  • API文档(JSON格式):http://localhost:8080/v2/api-docs

如果配置正确,你应该能够直接访问这些页面,而不会被重定向到登录页面。

5. 其他注意事项

  • CSRF保护:如果启用了CSRF保护,可能会影响Swagger UI的使用。可以通过.csrf().disable()临时禁用CSRF,或者为Swagger路径单独配置CSRF忽略。
  • 静态资源路径:如果Swagger UI的静态资源路径被Spring Security拦截,可能会导致页面加载不完整。确保/webjars/**路径被正确忽略。
  • Spring Boot 3.x:如果你使用的是Spring Boot 3.x,可能需要使用Springfox 3.x或更高版本,并调整相关配置。

6. 完整示例

以下是一个完整的Spring Security配置类,包含Swagger路径的忽略登录配置:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {@Overrideprotected void configure(HttpSecurity http) throws Exception {http.authorizeRequests().antMatchers("/swagger-ui.html",       // Swagger UI界面"/v2/api-docs",           // Swagger API文档"/swagger-resources/**",  // Swagger资源文件"/webjars/**",            // Swagger UI静态资源"/public/**"              // 其他需要忽略登录的路径).permitAll() // 允许匿名访问.anyRequest().authenticated() // 其他路径需要登录.and().formLogin() // 启用表单登录.and().csrf().disable(); // 禁用CSRF(根据需求决定是否禁用)}
}

总结

通过以上配置,你可以将Swagger相关的路径加入Spring Security的忽略登录列表,确保Swagger UI和API文档可以无需登录即可访问。根据项目需求,你还可以进一步调整Spring Security的配置,例如添加OAuth2、JWT等认证方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/18605.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Day45(补)【软考】2022年下半年软考软件设计师综合知识真题-计算机软件知识1

文章目录 2022年下半年软考软件设计师综合知识真题第1章 计算机系统基础知识(12/38)计算机软件知识1-6/6哲学概念及收敛思维&#xff1a;是Python程序语言中&#xff0c;处理异常的结构集合&#xff0c;和这个集合之外的结构的区分&#xff0c;考Python集合之外的结构 哲学概念…

Spring MVC Streaming and SSE Request Processing SSE可以实现chatgpt一次请求分批次响应的效果

1. Introduction This simple tutorial demonstrates the use of several asynchronous and streaming objects in Spring MVC 5.x.x. Specifically, we’ll review three key classes: ResponseBodyEmitterSseEmitterStreamingResponseBody Also, we’ll discuss how to i…

应对DeepSeek总是服务器繁忙的解决方法

最近由于访问量过大&#xff0c;DeepSeek服务器官网经常弹出&#xff1a;“服务器繁忙&#xff0c;请稍后再试”的提示&#xff0c;直接卡成PPT怎么办&#xff1f;服务器繁忙直接看到视觉疲劳&#xff1a; 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题&#xff0c;是因为访问量…

GoC题解(21) 725.画迷宫(下册第4课)

题目描述 真观察下面迷宫图。发现它是一个边长逐渐变长的15边回旋图&#xff0c;边长依次为10、20、30....。 参考答案 int main(){int len0;for(int i1;i<15;i){ len10;pen.fd(len).rt(90); }return 0; } 解题思路 使用一个变量来记录每次循环时应该画多长的边&#…

STM32之SG90舵机控制

目录 前言&#xff1a; 一、硬件准备与接线 1.1 硬件清单 1.2 接线 二、 SG90舵机简介 1.1 外观 1.2 基本参数 1.3 引脚说明 1.4 控制原理 1.5 特点 1.6 常见问题 三、 单片机简介 四、 程序设计 4.1 定时器配置 4.2 角度控制函数 4.3 主函数调用 五、 总结 …

在vscode中拉取gitee里的项目并运行

拉取项目: 方法一:vscode点击查看--->终端(或者直接通过快捷键ctrol+ `打开) 在终端内通过cd命令定位到你想存放项目的文件夹 例如:cd h: 通过命令:git clone 地址 例如:git clone newbee-mall-vue-app: 前端代码 等待拉取完成即可在对应文件夹下看到项目啦 方…

机器学习实战(2):数据预处理——机器学习的第一步

第2集&#xff1a;数据预处理——机器学习的第一步 在机器学习的旅程中&#xff0c;数据预处理是至关重要的第一步。它决定了模型训练的质量和最终性能。没有经过良好预处理的数据就像未经打磨的钻石&#xff0c;虽然可能蕴含价值&#xff0c;但难以展现其光彩。今天我们将深入…

B站视频同步思维导图(全)

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z 文章目录 前言分段视频一张思维导图版本手写版本联系作者 分段视频 Java基础 并发编程 MySQL redis…

Spring中@Import原理和使用

Import注解是Spring框架中一个非常强大的工具&#xff0c;它允许你将普通类、组件类、ImportSelector实现类和ImportBeanDefinitionRegistrar实现类引入到容器中。通过Import&#xff0c;你可以实现配置的模块化&#xff0c;使得代码更加清晰和易于维护。 Spring集成很多框架时…

《pytorch》——优化器的解析和使用

优化器简介 在 PyTorch 中&#xff0c;优化器&#xff08;Optimizer&#xff09;是用于更新模型参数以最小化损失函数的关键组件。在机器学习和深度学习领域&#xff0c;优化器是一个至关重要的工具&#xff0c;主要用于在模型训练过程中更新模型的参数&#xff0c;其目标是最…

第J2周:ResNet50V2算法实战与解析

文章目录 一、准备工作1.设置GPU2.导入数据3.查看数据 二、数据预处理1.加载数据2.可视化数据 总结 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、准备工作 1.设置GPU import tensorflow as tf gpus …

CAS单点登录(第7版)18.日志和审计

如有疑问&#xff0c;请看视频&#xff1a;CAS单点登录&#xff08;第7版&#xff09; 日志和审计 Logging 概述 Logging CAS 提供了一个日志记录工具&#xff0c;用于记录重要信息事件&#xff0c;如身份验证成功和失败;可以对其进行自定义以生成用于故障排除的其他信息。…

Mybatisplus-IService

文章目录 简介IService如何继承基础业务完成复杂业务逻辑更简便的Lambda方法批处理 简介 IService类似于我们的BaseMapper吧 现在就是Service层的那些简单的CRUD也不用写了 下面是方法图 IService如何继承 不同于Mapper可以直接基础BaseMapper接口不用实现 我们的serviceIm…

一键安装教程

Maven 安装 右键 以管理员身份运行点击 下一步安装完成后会同步配置环境变量打开 cmd, 输入 mvn 查看mvn版本修改 maven 本地仓库地址 见图三, 本地新建文件夹&#xff0c;修改为你本地文件夹地址 Redis 安装 右键 以管理员身份运行点击 下一步会安装到选择的文件夹下 JAVA\R…

5分钟掌握LM Studio本地部署DeepSeek R1

文章目录 LM Studio安装与配置修改模型下载源下载DeepSeek R1模型模型选择配置模型部署API服务常见问题解决总结LM Studio安装与配置 下载地址:https://lmstudio.ai/ LM Studio 是一款专为开发者设计的轻量级集成开发环境(IDE),支持多种编程语言及框架,提供智能代码补全…

(前端基础)HTML(一)

前提 W3C:World Wide Web Consortium&#xff08;万维网联盟&#xff09; Web技术领域最权威和具有影响力的国际中立性技术标准机构 其中标准包括&#xff1a;机构化标准语言&#xff08;HTML、XML&#xff09; 表现标准语言&#xff08;CSS&#xff09; 行为标准&#xf…

Beszel监控Docker安装

一、Beszel Hub安装 #Beszel Hub安装 mkdir -p ./beszel_data && \ docker run -d \--name beszel \--restartunless-stopped \-v ./beszel_data:/beszel_data \-p 8090:8090 \henrygd/beszel#创建账号 账号/密码&#xff1a;adminadmin.com/adminadmin.com 二、Besz…

flutter image_cropper插件安装后 打包apk 报错命名空间问题

本篇文章主要讲解&#xff0c;Flutter安装完新依赖打包apk报错 A problem occurred configuring project ‘:image_cropper’. 命名空间问题的解决办法及原因说明。 日期&#xff1a;2025年2月15日 作者&#xff1a;任聪聪 一、报错现象&#xff1a; 报文信息&#xff1a; FAI…

unity学习41:动画里的曲线curve参数 和 事件 events

目录 1 曲线 curve 1.1 生成和修改曲线 1.2 曲线命名 animator参数命名&#xff0c;关联起来 1.3 可以修改animator的参数&#xff0c;也可以获取animator的参数 1.4 用脚本获得曲线的参数数值&#xff0c;并打印出来 1.4.1 获得曲线的test1参数 1.4.2 代码 1.4.3 测…

JVM学习

JVM 1、JVM是一个跨语言的平台&#xff0c;与语言无关 2、java虚拟机规范&#xff1a;一流企业做标准&#xff0c;二流企业做品牌&#xff0c;三流企业做产品 JVM种类 Hotspot&#xff1a;Oracle 公司&#xff0c;有商业版和免费版 open jdk 内部包含免费版本hotspot虚拟机 Jr…