转:https://www.jianshu.com/p/ce7e247515f5?utm_source=oschina-app

:本文是基于springboot配置实现,但在实际中使用springmvc和本文的配置基本一致,不影响使用。

下面是第一种配置方式。尽量精简的配置。

1 在pom文件中引入依赖

<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>

2 新建swag配置文件
在代码中新定义一个类,代码如下

@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.build()
.apiInfo(apiInfo());
} private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("对外开放接口API 文档")
.description("HTTP对外开放接口")
.version("1.0.0")
.termsOfServiceUrl("http://xxx.xxx.com")
.license("LICENSE")
.licenseUrl("http://xxx.xxx.com")
.build();
}
}

3 在自己的controller中使用

@Slf4j
@RestController
public class MyController {
@RequestMapping(value = "hello", method = RequestMethod.GET)
public String hello() {
return "hello";
}
}

如上的配置就可以了,下面是展示效果
在本地启动项目,然后浏览器输入:

http://localhost:8080/swagger-ui.html
效果如下:

 
swagger.png

这种配置方式非常简单,对原有的代码也基本没有任何侵入性。基本可以满足接口描述的需求。

但是,有很多项目都是前后端分离的,在nginx中会配置把 "/rest/" 开头的链接打到后端来,而把其他请求打到前端去。当然,你可以修改nginx的配置,把某些链接打到前端去,剩下的直接打到后端。不过这种方式会有一定的安全性问题,可控性也不太好。最好能给修改swagger的展示地址,
比如从
http://localhost:8080/swagger-ui.html
修改为
http://localhost:8080/rest/api/doc/swagger-ui.html

下面就是第二种配置方式,可以自定义展示链接。

1 在pom文件中引入依赖(注意我们去掉了对springfox-swagger-ui的依赖

<!-- Swagger -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>

2 git clone swagger-ui项目

https://github.com/swagger-api/swagger-ui
请选择2.0以上,3.0以下版本

将其中的dist文件夹拷贝到自己项目中的resources/swagger目录下,如图

 
dist.png

3 在resources下新建swagger.properties文件,其中的内容为

springfox.documentation.swagger.v2.path=/rest/api/doc

4 修改resources/swagger/dist 下的index文件
将其中的

  <script type="text/javascript">
$(function () {
var url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "http://petstore.swagger.io/v2/swagger.json";
}

url = "http://petstore.swagger.io/v2/swagger.json"
修改为
url = "/rest/api/doc"
修改后如下

  <script type="text/javascript">
$(function () {
var url = window.location.search.match(/url=([^&]+)/);
if (url && url.length > 1) {
url = decodeURIComponent(url[1]);
} else {
url = "/rest/api/doc";
}

5 新建swag配置文件
在代码中新定义一个类,代码如下

@Configuration
@EnableSwagger2
@PropertySource("classpath:swagger.properties") // 新增对swagger.properties 的引入
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.build()
.apiInfo(apiInfo());
} private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("对外开放接口API 文档")
.description("HTTP对外开放接口")
.version("1.0.0")
.termsOfServiceUrl("http://xxx.xxx.com")
.license("LICENSE")
.licenseUrl("http://xxx.xxx.com")
.build();
}
}

6 增加url映射
如果是springboot,在Application中增加

@SpringBootApplication
public class DemoApplication extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/rest/api/doc/**").addResourceLocations("classpath:/swagger/dist/");
}
.....
}

如果是springmvc,则在api-servlet.xml(application.xml)中增加

<mvc:resources mapping="/rest/api/doc/**" location="classpath:/swagger/dist/"/>

终于配置完成,启动项目,在浏览器中输入:

http://localhost:8080/rest/api/doc/index.html

 
swagger.png

springfox官网

http://springfox.github.io/springfox/

api注解相关描述可参考

http://blog.csdn.net/xupeng874395012/article/details/68946676

wagger的展示路径修改的更多相关文章

  1. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  2. maven之respository(仓库)本地路径修改

    maven默认的仓库路径会在c盘(我的C:\Users\Administrator\.m2\repository),这样如果系统出问题或其他原因会造成仓库损坏,因此会自己配置仓库路径. 1.首先找到你 ...

  3. xp默认安装路径及本地用户配置文件存放路径修改

    xp默认安装路径及本地用户配置文件存放路径修改 修改注册表可能会造成您的系统崩溃或数据丢失,请先行备份操作系统,以备不测!!! 备份注册表步骤: 1.在“桌面”上按快捷键“Ctrl+R”,调出“运行” ...

  4. AMH4.2 Ftp账号路径修改设置

    AMH4.2的ftp控制有点不尽如人意,每个ftp账号只能对应一个站点:如果按照面板所提供的权限,有多少个站就得设置多少个ftp账号,这一操作就会非常麻烦,造成效率低下:不过AMH5.0已经能够通过面 ...

  5. [Eclispe] NDK内建include路径修改

    [Eclispe] NDK内建include路径修改 编辑 jni/android.mk 中 LOCAL_C_INCLUDES 变量后,该变量值将被列入项目属性的内建include头文件包含路径,无法 ...

  6. Oculus Store游戏下载默认路径修改方法

    最近在测试一款VR游戏,所以在硬件设备上选择了HTC Vive和Oculus两款眼镜.相对而言,HTC安装比较人性化:支持自定义安装路径,而且可在界面更改应用程序下载位置,如图所示: 这下替我节省了不 ...

  7. ubuntu16.04 Docker默认存储路径修改

    Ubuntu 16.04 Docker默认存储路径修改

  8. Android Studio配置文件路径修改

    用Android Studio进行Android开发已经成为趋势了,好的工具要用得称手也少不了好的调教,在Windows下更是如此.这里对Android Studio的相关配置文件的路径修改做下小结. ...

  9. Sublime Text 3 配置文件路径修改

    Sublime Text 3安装完以后(安装过程不再演示),第一次打开会在C:\Users\admin\AppData\Roaming目录下创建一个Sublime Text 3目录用于存放Sublim ...

随机推荐

  1. 《Linux内核设计与实现》读书笔记 18

    第十八章调试 18.1 准备开始 一个bug:大部分bug通常都不是行为可靠而且定义明确的 一个藏匿bug的内核版本:找出bug首先出现的版本 相关内核代码的知识和运气 18.2内核中的bug 可以有 ...

  2. how are you

    #include<stdio.h>   int main(){   char sentence[100];   int len=0,j,wordlen=0;   gets(sentence ...

  3. Leetcode——171.宝石与石头

    水题: 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石. J 中的字母不重复,J 和 S中的所有字符 ...

  4. Python入门:数据结构的4种基本类型

    数据结构:通俗点说,就是储存大量数据的容器.这里主要介绍Python的4种基本数据结构:列表.字典.元组.集合. 格式如下: 列表:list = [val1,val2,val3,val4],用中括号: ...

  5. Java的JDK下Hashtable与HashMap的区别

    时间角度: Hashtable * @since JDK1.0 ; HashMap* @since   1.2 基类与接口角度: public class Hashtable<K,V> e ...

  6. [转帖]一文看懂web服务器、应用服务器、web容器、反向代理服务器区别与联系

    一文看懂web服务器.应用服务器.web容器.反向代理服务器区别与联系 https://www.cnblogs.com/vipyoumay/p/7455431.html 我们知道,不同肤色的人外貌差别 ...

  7. 普通PC安装ESXi5.5以及以上的方法

    原贴内容 With ESXi 5, ESX no longer uses MBR for boot, it has gone to GPT-based partitions instead.    W ...

  8. FuelPHP 系列(六) ------ CURD 增删改查

    一.create $article = new Model_Article(); // 或 $article = Model_Article::forge(); // 保存数据,返回新增数据 id $ ...

  9. VMware安装win7提示 operating system not found

    在虚拟机上安装win7时,进度条读完,重启后提示operating system not found,可能原因是在使用分区工具格式化时没有把C盘设置为主分区并激活. 解决办法: 进入PE或者使用分区工 ...

  10. python自动化运维笔记3 —— dns处理模块dnspython

    1.3 DNS处理模块 dnspython是python实现的一个DNS工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新ZONE信息,同时支持TSIG(事物签名)验证消息和EDNS0(扩 ...