SpringBoot项目实战:整合Swagger2构建强大的Restful Api接口文档(二)

微服务方向:springboot, springCloud, Dubbo

分布式/高并发: 分布式锁, 消息队列RabbitMQ

大数据处理: Hadoop, spark, HBase等

python方向: python web开发

一,前言

承接上一篇SpringBoot项目实战(二十三篇):整合Swagger2构建强大的Restful Api接口文档(一)整合Swagger搭建步骤还是很简单,但是往往再真实的环境中总会出现各种奇葩的问题, 让我们很头疼。

二,踩坑小记

接下来我就分享一个出现问题的场景,并分析其背后造成的原因是什么。

出现如下问题:

访问swagger-ui.html始终出现找不到页面

如果仅仅是按照上一篇来搭建的话, 是很成功的,不会出现任何问题。那么我还是复现一下问题场景,看大家是否有出现跟我一样的场景。

复现一下问题场景:

1. 新建WebConfig配置类

package cn.rayson.config;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;/** * 该类再项目中的作用可以添加拦截器, 以及跨域配置, 而且可以说在项目中不可缺少,占有很重要的地位 * * @author 方雷(Rayson) * @微信公众号: rayson_666(Rayson开发分享) 、 * 分享springBoot springCloud技术, 以及python,大数据学习系列 * @个人博客: http://blog.chargingbunk.cn/ * @简书: https://www.jianshu.com/u/5b0de5c8dc56 * 2018年6月9日 */@Configuration@EnableWebMvcpublic class WebConfig extends WebMvcConfigurerAdapter { /** * 此方法是用来注册跨域的 */ @Override public void addCorsMappings(CorsRegistry registry) { // TODO Auto-generated method stub super.addCorsMappings(registry); } /** * 此方法是用来注册拦截器的 */ @Override public void addInterceptors(InterceptorRegistry registry) { // TODO Auto-generated method stub super.addInterceptors(registry); } /** * 此方法是用来添加静态资源映射的 */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // TODO Auto-generated method stub super.addResourceHandlers(registry); } }

如上代码就是我创建好的WebConfig配置类, 并继承WebMvcConfigurerAdapter, @EnableWebMvc 用于启用Spring MVC的。

然后直接启动项目,然后我们来访问一下http://localhost:8080/swagger-ui.html,结果出现了Whitelabel Error Page

那么问题出现了, 我们接下来就分享下解决方案。

2.分析问题原因及解决方案

问题的原因:

如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。 需要重新指定静态资源

解决方案:

/** * 此方法是用来添加静态资源映射的 * 发现如果继承了WebMvcConfigurationSupport,则在yml中配置的相关内容会失效。 需要重新指定静态资源 */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations( "classpath:/static/"); registry.addResourceHandler("swagger-ui.html").addResourceLocations( "classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations( "classpath:/META-INF/resources/webjars/"); super.addResourceHandlers(registry); }

配置好了过后, 重新访问swagger-ui.html就可以访问成功

三,总结

我不如地狱谁入地狱。大家有没有觉得如果api接口文档中包含大量的接口文档, 而且一直是上下滚动,不方便查看和翻阅。所以下一篇后续会介绍基于swagger左右布局的swagger-ui框架。

参考资料

SpringBoot配置SwaggerUI访问404错误处理1

SpringBoot配置SwaggerUI访问404错误处理2

Springboot下swagger-ui.html访问不到

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180610G12B3S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券