当前位置: 首页 > news >正文

SpringBoot的Swagger配置

一、Swagger配置

1.添加依赖

<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version>
</dependency>

2.修改WebMvcConfig 

@Slf4j
@Configuration
@EnableSwagger2
@EnableKnife4j
public class WebMvcConfig extends WebMvcConfigurationSupport {@Overrideprotected void addResourceHandlers(ResourceHandlerRegistry registry) {log.info("开始进行静态资源映射...");registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");}/*** 扩展mvc框架的消息转换器** @param converters*/@Overrideprotected void extendMessageConverters(List<HttpMessageConverter<?>> converters) {log.info("扩展消息转换器...");//创建消息转换器对象MappingJackson2HttpMessageConverter messageConverter = new MappingJackson2HttpMessageConverter();//设置对象转换器,底层使用Jackson将Java对象转为jsonmessageConverter.setObjectMapper(new JacksonObjectMapper());//将上面的消息转换器对象追加到mvc框架的转换器集合中converters.add(0, messageConverter);}@Beanpublic Docket createRestApi() {// 文档类型return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.alibaba.reggie.controller")).paths(PathSelectors.any()).build();}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("瑞吉外卖").version("1.0").description("瑞吉外卖接口文档").build();}
}

3.修改LoginCheckFilter

@Slf4j
@WebFilter(filterName = "loginCheckFilter", urlPatterns = "/*")
public class LoginCheckFilter implements Filter {// 路径匹配器,支持通配符public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;// 获取到当前请求URIString requestURI = request.getRequestURI();// 白名单不拦截String[] urls = new String[]{"/employee/login","/employee/logout","/backend/**", // 放行静态资源"/front/**","/user/sendMsg","/user/login",/*不登录也能查看swagger文档*/"/doc.html","/swagger-resources","/webjars/**","/v2/api-docs"};// 判断本次请求是否需要处理boolean check = check(urls, requestURI);if (check) { // 不需要处理filterChain.doFilter(request, response);return;}// 浏览器:判断登录状态,如果已登录,则直接放行if (request.getSession().getAttribute("employee") != null) {// Session中找到登录用户,放行Long empId = (Long) request.getSession().getAttribute("employee");BaseContext.setCurrentId(empId);filterChain.doFilter(request, response);return;}// 移动端:判断登录状态,如果已登录,则直接放行if (request.getSession().getAttribute("user") != null) {// Session中找到登录用户,放行Long userId = (Long) request.getSession().getAttribute("user");BaseContext.setCurrentId(userId);filterChain.doFilter(request, response);return;}// 未登录log.info("拦截到请求:{}", requestURI);// 返回未登录结果,通过输出流方式向客户端页面响应数据response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));}/*** @param urls* @param requestURI* @return*/public boolean check(String[] urls, String requestURI) {for (String url : urls) {boolean match = PATH_MATCHER.match(url, requestURI);if (match) {return true;}}return false;}
}

4.启动项目后浏览器访问

http://localhost:8081/doc.html#/home 

二、Swagger常用注解 

 

http://www.lryc.cn/news/525525.html

相关文章:

  • machine learning knn算法之使用KNN对鸢尾花数据集进行分类
  • C语言练习(16)
  • SOAFEE 技术研讨会:汽车软件定义与自动驾驶技术探讨
  • R语言学习笔记之开发环境配置
  • 多版本并发控制:MVCC的作用和基本原理
  • ubuntu18.04安装nvm管理本机node和npm
  • 【数据结构进阶】红黑树超详解 + 实现(附源码)
  • leetcode_3092. 最高频率的 ID
  • 鸿蒙仓颉环境配置(仓颉SDK下载,仓颉VsCode开发环境配置,仓颉DevEco开发环境配置)
  • 数据统计–图形报表(day11)
  • 源码分析之Openlayers样式篇CircleStyle类
  • 解决CentOS9系统下Zabbix 7.2图形中文字符乱码问题
  • AF3 FourierEmbedding类源码解读
  • vsftpd虚拟用户部署
  • MySQL 容器已经停止(但仍然存在),但希望重新启动它,并使它的 3306 端口映射到宿主机的 3306 端口是不可行的
  • 汇编实验·顺序程序设计
  • AIGC视频扩散模型新星:Video 版本的SD模型
  • HarmonyOS:通过(SQLite)关系型数据库实现数据持久化
  • 10. SpringCloud Alibaba Sentinel 规则持久化部署详细剖析
  • STM32更新程序OTA
  • MarsCode青训营打卡Day10(2025年1月23日)|稀土掘金-147.寻找独一无二的糖葫芦串、119.游戏队友搜索
  • vue(33) : 安装组件出错解决
  • ChatGPT结合Excel辅助学术数据分析详细步骤分享!
  • stm32f103 单片机(一)第一个工程
  • 云计算和服务器
  • Spring 框架:配置缓存管理器、注解参数与过期时间
  • Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
  • 并发编程 - 线程同步(一)
  • PyTorch入门 - 为什么选择PyTorch?
  • leetcode刷题记录(八十六)——84. 柱状图中最大的矩形