Swagger文档框架

一、介绍

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

二、SpringBoot使用默认集成

  1. pom
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version><exclusions><exclusion><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId></exclusion><exclusion><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId></exclusion></exclusions>
</dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-annotations</artifactId><version>1.5.21</version>
</dependency><dependency><groupId>io.swagger</groupId><artifactId>swagger-models</artifactId><version>1.5.21</version>
</dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>
  1. SwaggerConfig.java
@Configuration
@EnableSwagger2
public class SwaggerConfig {@Beanpublic Docket createRestApi() {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.basePackage("com.bxc.conformity.Swagger.DemoController"))
//                .paths(PathSelectors.regex("/App/.*|Thirdparty/.*")).paths(PathSelectors.regex("(/App/.*)|(/Thirdparty/.*)")).build().securitySchemes(securitySchemes()).securityContexts(securityContexts());}private List<ApiKey> securitySchemes() {List<ApiKey> apiKeyList = new ArrayList();apiKeyList.add(new ApiKey("Token", "token", "header"));return apiKeyList;}private List<SecurityContext> securityContexts() {List<SecurityContext> securityContexts = new ArrayList<>();securityContexts.add(SecurityContext.builder().securityReferences(defaultAuth()).forPaths(PathSelectors.regex("^(?!auth).*$")).build());return securityContexts;}List<SecurityReference> defaultAuth() {AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];authorizationScopes[0] = authorizationScope;List<SecurityReference> securityReferences = new ArrayList<>();securityReferences.add(new SecurityReference("Token", authorizationScopes));return securityReferences;}private ApiInfo apiInfo() {
//     访问地址   http://localhost:8085/swagger-ui.htmlreturn new ApiInfoBuilder().title("接口文档 1.0.0").description("哈哈网络科技有限公司").version("1.0.0").build();}
}
  1. 使用
@Api(tags = "接口")
@RestController
@RequestMapping("/App")
public class SwController {@ApiOperation(value = "添加用户",notes = "  username        用户名 \n" +"passwd          密码 \n" +"company         公司名称 \n" +"child_number    子用户个数 \n")@PostMapping("/AddUser")public ResponseTemplate AddUser(@RequestBody@ApiParam(value = "{\"username\":\"test2\",\"passwd\":\"test\",\"company\":\"哈哈网络\",\"child_number\":10}")UserEntity user,HttpServletRequest request) {return ResSuccessTemplate.builder().build();}@ApiOperation("获取用户")@ApiImplicitParams({@ApiImplicitParam(name = "userid", value = "用户的id", required = true)})@GetMapping("/getUser/{userid}")public ResponseTemplate GetRootChildNumberMax(@PathVariable("userid") int userid) {return ResSuccessTemplate.builder().build();}
}
@ApiModel
@Mapper
public class UserEntity {@ApiModelProperty(hidden= true)private int id;@ApiModelProperty(hidden= true)private String username;@ApiModelProperty(value = "需求主题")private String age;@ApiModelProperty(hidden= true)@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)private String passwd;}

二、SpringBoot集成并自定义Swagger访问路径

上面的集成后,访问地址为:http://localhost:8030/swagger-ui.html
在一些经过网关访问时要加上某个自定义地址,当然可以通过 spring.jersey.application-path来实现,但有些情况不好设置全局的地址时,就可以用下面方式。

下面将Swagger访问地址修改为:
http://localhost:8030/my/index.html

  1. 下载swagger-ui

https://github.com/swagger-api/swagger-ui/tree/v3.18.3

  1. 配置数据转发
@Controller
@RequestMapping("/my")
public class SwaggerController {@GetMapping("/v2/api-docs")public void  swagger(HttpServletRequest request, HttpServletResponse response){String url = "/v2/api-docs";System.out.println(url);try {request.getRequestDispatcher(url).forward(request,response);} catch (Exception e) {e.printStackTrace();}}}
  1. 将解压后打包好的dist文件夹改名称为my,并将修改后的文件夹复制到static下。
  2. 修改static/my/index.html
将 url: "https://petstore.swagger.io/v2/swagger.json"
修改为:url: "/my/v2/api-docs"


修改引用:

 <script src="/my/swagger-ui-bundle.js"> </script>
<script src="/my/swagger-ui-standalone-preset.js"> </script>


5. 重新打开项目便以生效。

SpringBoot集成Swagger文档及自定义访问路径相关推荐

  1. SpringBoot 集成接口文档,老鸟们也被打脸了!

    之前我在SpringBoot老鸟系列中专门花了大量的篇幅详细介绍如何集成Swagger,以及如何对Swagger进行扩展让其支持接口参数分组功能.详情可见:SpringBoot 如何生成接口文档,老鸟 ...

  2. 权限管理系统2—集成Swagger文档

    (Swagger介绍及使用) Swagger用于多人协作中共享和及时更新API开发接口文档的问题 1.  引入包 <!-- swagger --><dependency>< ...

  3. SpringBoot集成swagger生成在线接口文档

    SpringBoot集成swagger生成在线接口文档 集成maven依赖 <dependency><groupId>io.springfox</groupId>& ...

  4. SpringBoot - 集成Swagger、Knif4j接口文档以及文档添加账号密码登录

    文章目录 集成Swagger.Knif4j 依赖 配置 演示 集成Swagger.Knif4j 依赖 pom.xml <!-- 引入Knife4j的官方start包,Swagger2基于Spri ...

  5. java附魔_给你的Swagger文档换套附魔皮肤吧

    本文将为您描述给你的Swagger文档换套附魔皮肤吧,具体完成步骤:前言 相信无论是前端或是后端的程序员对Swagger都不怎么陌生,没有用过应该也听说过 Swagger 是一个规范和完整的框架,用于 ...

  6. 【水滴石穿】SpringBoot 集成Swagger

    SpringBoot 集成Swagger Swagger 可以使你的restful接口自动生成接口文档,方便查看与测试,下面是一些具体步骤: 1.引入swagger相关依赖 <dependenc ...

  7. SpringBoot教程(十六) | SpringBoot集成swagger(全网最全)

    一. 接口文档概述 swagger是当下比较流行的实时接口文文档生成工具.接口文档是当前前后端分离项目中必不可少的工具,在前后端开发之前,后端要先出接口文档,前端根据接口文档来进行项目的开发,双方开发 ...

  8. 使用 Swagger 文档化和定义 RESTful API

    大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API--REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Services Descript ...

  9. idea快速生成crud_Java / Spring:如何快速生成完整的Swagger文档CRUD REST API

    idea快速生成crud 作为开发人员,我们在日常生活中经常面临的最繁琐的任务之一就是编写良好且易于理解的文档. 无论我们的文档只有几行来解释功能的核心功能,还是表明系统的来龙去脉的成熟文章都没关系. ...

  10. swagger文档配置

    swagger文档在springboot项目中使用已经非常广泛,作为api接口管理工具 使用起来也很简单,只需要简单配置一下,就可以生成文档管理页面,在页面上管理查看api接口文档,以及进行接口调试等 ...

最新文章

  1. axi dma 寄存器配置_FPGA Xilinx Zynq 系列(三十二)AXI 接口
  2. 移动端向服务端提交数据——实现简单登录
  3. 增加网格_网格交易法(期货)
  4. 2018计算机应用基础考试6,2018结构工程师《计算机应用基础》试题(6)
  5. cmd查询Oracle中的表 成表格显示,oracle如何通过cmd导出某个用户下的所有表
  6. 深度学习去燥学习编码_请学习编码
  7. 计算机基础项目任务教学重构,面向计算思维培养的中职课程项目式重构研究
  8. 【ROS学习笔记】(七)服务端Server的实现
  9. mysql存储过程事务和捕获异常信息
  10. RN学习(一)——创建第一个RN项目
  11. 【Python精彩案例】生成动态二维码
  12. c语言薛定谔方程,如何解薛定谔方程?-- k · p method
  13. Linux DMA Engine framework(2)_功能介绍及解接口分析
  14. 旅游地图制作_手把手教你用旅游神器App:谷歌地图
  15. 闲话Variable Selection和Lasso
  16. 【计算机视觉】边缘检测
  17. 大学计算机二级必考,计算机二级大学生必考吗
  18. aspnet core 3.1 Kestrel Protocols Http1AndHttp2
  19. 关于Abaqus+python提取s11残余应力(按路径提取)
  20. 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母,小写字母,数字,空格以及其他字符的个数。谭浩强《C程序设计课后习题》第6章第10题。

热门文章

  1. Java基础:Java的优点和缺点
  2. 《白雪歌送武判官归京》古诗鉴赏
  3. Android-黑客技术-实现类似电脑版软件破解版
  4. 减持奈飞增持京东健康,“贝莱德们”为何开始偏爱中国企业?
  5. 佳能计算机使用方法,佳能扫描仪怎么用?佳能扫描仪使用方法
  6. 关闭Win10强制自动更新驱动
  7. 如何使用xxl-job分布式任务调度平台 | 定时任务
  8. Visual C++网络编程经典案例详解 第9章 实用播放器 编程基础 播放mp3文件 读取文件
  9. 面向对象之魔术方法_call
  10. 零基础转行到IT,怎么选择适合的职业?