spring-boot 集成 swagger

网上有许多关于 spring boot 集成 swagger 的教程。按照教程去做,发现无法打开接口界面。

项目由 spring mvc 迁移过来,是一个无界面纯 API 的项目。迁移之前就支持 swagger。

【问题描述】

第一个问题是无权限访问,这个问题好办,在 shiro 的配置里,设置

  /swagger-ui.html = anon

再次测试仍不行,于是暂时禁用 shiro, 即将

  /** = user --> /** = anon

这次的错误是 404。

第二个问题是无法访问 swagger-ui

查看控制台日志,发现程序会从 static/ 目录下找 /swager-ui.html 这个文件,但应用中根本没有 static/ 目录。而 swagger-ui.html 这个文件在 springfox-swagger-ui 这个依赖的 jar 包里。

肯定是 spring-boot 处理资源文件的默认行为不支持从 jar 包里加载资源文件,需要重写默认的行为。

增加一个 WebConfig,内容如下:

@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = {
"classpath:/META-INF/resources/",
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/",
"classpath*:/META-INF/resources/",
};
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**")
.addResourceLocations(CLASSPATH_RESOURCE_LOCATIONS);
}
}

关键是高亮的部分(其余部分都是默认行为)。

再次测试,浏览器里输入  xxxx/swagger-ui.html 界面显示正常了。

第三个问题:与 shiro 兼容

恢复 shiro 的权限校验功能,即改回 /** = user. 再次打开 xxxx/swagger-ui.html 发现样式显示错误。

这个原因是因为 swagger-ui 这个 jar 包里除了 swagger-ui.html 还有资源文件。资源文件被禁用了。因此需要在 shiro 配置文件里添加以下规则:

/webjars*/** = anon

【使用新的界面】

上面集成的是默认界面,不太好用,网上找到了另一篇文章,使用了比较好的界面。可参照下面的链接进行配置:

https://gitee.com/xiaoym/swagger-bootstrap-ui

spring-boot 集成 swagger 问题的解决的更多相关文章

  1. Spring boot集成Swagger,并配置多个扫描路径

    Spring boot集成Swagger,并配置多个扫描路径 1:认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格的 Web 服务.总体目 ...

  2. Spring Boot 集成 Swagger 构建接口文档

    在应用开发过程中经常需要对其他应用或者客户端提供 RESTful API 接口,尤其是在版本快速迭代的开发过程中,修改接口的同时还需要同步修改对应的接口文档,这使我们总是做着重复的工作,并且如果忘记修 ...

  3. Spring Boot 集成 Swagger,生成接口文档就这么简单!

    之前的文章介绍了<推荐一款接口 API 设计神器!>,今天栈长给大家介绍下如何与优秀的 Spring Boot 框架进行集成,简直不能太简单. 你所需具备的基础 告诉你,Spring Bo ...

  4. Spring Boot 集成Swagger

    Spring Boot 集成Swagger - 小单的博客专栏 - CSDN博客https://blog.csdn.net/catoop/article/details/50668896 Spring ...

  5. spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,guava限流,定时任务案例, 发邮件

    本文介绍spring boot集成swagger,自定义注解,拦截器,xss过滤,异步调用,定时任务案例 集成swagger--对于做前后端分离的项目,后端只需要提供接口访问,swagger提供了接口 ...

  6. 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案

    [Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 ![](https://img2018.cnblogs.com/blog/746311/201909/746311 ...

  7. Spring Boot 集成 Swagger 生成 RESTful API 文档

    原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...

  8. Spring Boot 集成 Swagger生成接口文档

    目的: Swagger是什么 Swagger的优点 Swagger的使用 Swagger是什么 官网(https://swagger.io/) Swagger 是一个规范和完整的框架,用于生成.描述. ...

  9. Spring boot 集成 Swagger

    添加依赖包 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swa ...

  10. spring boot集成swagger文档

    pom <!-- swagger --> <dependency> <groupId>io.springfox</groupId> <artifa ...

随机推荐

  1. 2017 icpc 沈阳网络赛

    cable cable cable Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  2. [TCO2013]Block3Checkers

    题意:一个网格上有一些障碍和$3$个在网格边界上的棋子,你要添加一些障碍使得没有两个棋子四连通,问最少添加多少个障碍 官方题解——一张图教你做人... 三个棋子将网格边界分成三段,添加障碍后网格中一定 ...

  3. 【计算几何】【二分】【随机增量法】hdu6167 Missile Interception

    n个半径为R的圆是否有公共部分,等价于询问是否存在一个半径小于R的圆,能覆盖所有n个圆的圆心. 对这n个点求最小圆覆盖即可.从网上扒了个随机增量法的代码. 这样算上二分,复杂度就是nlogn了. #i ...

  4. python基础之类与对象,继承与派生

    类与对象 对象的本质也就是一个名称空间而已,用于存放自己独有的属性,而类中存放的是对象共有的属性. __init__会在调用类时自动触发 调用类时发生两件事: 1.创建一个空对象stu1 2.自动触发 ...

  5. Problem F: 零起点学算法42——多组测试数据输出II

    #include<stdio.h> int main() { ; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { ...

  6. win7 64位 php环境开启curl服务Call to undefined function

    无法使用curl_init(),一般情况问题可能出在没有去加载php的扩展文件php_curl.dll(windows操作系统),但是检查了一下系统配置,发现,环境下已经将php.ini文件里 ;ex ...

  7. 利用Visual Studio Natvis 框架简化C++的变量调试工作

    相信用C++开发过UI界面的程序员都对其变量调试工作头痛不已,由于复杂的继承关系,要查看到某个变量往往需要一系列的层层深入的点击,如下图就是查看TextBox的Text的例子: 为了查看Text属性, ...

  8. iptables的框架

    参考 : https://segmentfault.com/a/1190000002540601           SNAT: 网关上,POSTROUTING链上,报文出去的时候处理,适用:内网多台 ...

  9. java使用HttpClient 发送get、pot请求

    package eidolon.messageback.PostUtil; import java.io.BufferedReader; import java.io.IOException; imp ...

  10. latex不能识别eps图片

    latex中可以使用.eps的图片,许多文档都介绍了怎么引用这种格式的图片,但没有给出使用过程中的注意事项.我在使用MIKTEX的时候,latex文档中引入.eps图片遇到了这样的问题.编译的时候显示 ...