Swagger的相关知识
文章目录
- Swagger(开源)
- 含义
- 导入的依赖
- SpringBoot集成Swagger
- 配置Swagger
- 配置Swagger扫描接口
- 例题
- 配置API文档的分组
- 总结
- 如果这个看不明白可以看这个,有详细的步骤
Swagger(开源)
含义
- 号称世界上最流行的API框架
- 直接运行,可以在线测试API测试
导入的依赖
在项目使用Swagger需要springbox;
- swagger2
- UI
SpringBoot集成Swagger
- 新建项目
- 导入项目依赖
<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.9.2</version>
</dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>2.9.2</version>
</dependency>
- 编写一个工程
- 配置swagger
package com.kuang.config;import org.springframework.context.annotation.Configuration;
import springfox.documentation.swagger2.annotations.EnableSwagger2;@Configuration
@EnableSwagger2
public class SwaggerConfig {}
- 测试运行网址:http://localhost:8080/swagger-ui.html
配置Swagger
swagger的bean的实例是Docket
//配置swagger信息的apiInfoprivate ApiInfo apiInfo(){Contact contact = new Contact("", "", "");return new ApiInfo("龙且的Api Documentation","Api Documentation","1.0","urn:tos",contact,"Apache 2.0","http://www.apache.org/licenses/LICENSE-2.0",new ArrayList());}
配置Swagger扫描接口
Docker.select()
//配置了Swagger的Docker的bean实例@Beanpublic Docket getDocker(){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()//RequestHandlerSelectors:配置扫描接口的方式//basePackage:指定要扫描的包(重要的)//any:扫描全部//none:都不扫描//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象//withMethodAnnotation:扫描方法上的注解.apis(RequestHandlerSelectors.basePackage("com.kuang.controller"))//过滤什么样的路径.paths(PathSelectors.ant("/kuang/**")).build();}
配置是否启动
@Beanpublic Docket getDocker(Environment environment){return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(flase) //是否能启动Swagger.select() .apis(RequestHandlerSelectors.basePackage("com.kuang.controller"))//过滤什么样的路径
// .paths(PathSelectors.ant("/kuang/**")).build();}
例题
只在生产环境中使用,发布不使用
- 判断是不是生产环境 flag=false
- 注入enable
@Beanpublic Docket getDocker(Environment environment){//设置要显示的Swagger环境Profiles profiles=Profiles.of("dev","test");//通过environment.acceptsProfiles判断是否处于自己设定的环境中boolean flag = environment.acceptsProfiles(profiles);return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).enable(flag).select()//RequestHandlerSelectors:配置扫描接口的方式//basePackage:指定要扫描的包(重要的)//any:扫描全部//none:都不扫描//withClassAnnotation:扫描类上的注解,参数是一个注解的反射对象//withMethodAnnotation:扫描方法上的注解.apis(RequestHandlerSelectors.basePackage("com.kuang.controller"))//过滤什么样的路径
// .paths(PathSelectors.ant("/kuang/**")).build();}
配置API文档的分组
.groupName("龙且")
如何配置多个分组?声明多个Docker实例就好,不能重名
@Beanpublic Docket docket1(){return new Docket(DocumentationType.SWAGGER_2).groupName("A");}@Beanpublic Docket docket2(){return new Docket(DocumentationType.SWAGGER_2).groupName("B");}@Beanpublic Docket docket3(){return new Docket(DocumentationType.SWAGGER_2).groupName("C");}
实体类配置:
package com.kuang.pojo;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;@ApiModel("用户实体类")
public class User {@ApiModelProperty("用户名")public String username;@ApiModelProperty("密码")public String password;
}
控制类配置:
package com.kuang.controller;import com.kuang.pojo.User;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;@ApiOperation("Hello控制类") //接口
@RestController
public class HelloController {@GetMapping(value = "/hello")public String getHello(){return "杀戮空间法兰克";}@PostMapping(value = "/hello")public User user(){return new User();}@ApiOperation("Hello控制类")@GetMapping(value = "/hello2")public String Hello(@ApiParam("用户名") String username){return "hello"+username;}}
总结
- 可以通过Swager给一些比较难理解的属性或接口,增加注解信息
- 接口文档实时更新
- 可以在线测试
【注意点】在正式发布时,关闭Swagger!!!
如果这个看不明白可以看这个,有详细的步骤
请点击
Swagger的相关知识相关推荐
- JS作用域相关知识(#精)
在学习<你不知道的JS>一书中,特将作用域相关知识在此分享一下: #说到作用域,就不得不提到LHS查询和RHS查询: 1)如果查询目的是对变量进行赋值,则使用LHS查询 2)如果查询目的是 ...
- 工业相机参数之帧率相关知识详解
点击上方"小白学视觉",选择加"星标"或"置顶"重磅干货,第一时间送达 工业相机是机器视觉系统的重要组成部分之一,在机器视觉系统中有着非常重 ...
- shell的相关知识(变量、脚本定义)
一.shell的相关知识: 1.对于shell编程语言大体分为:机器语言.汇编语言.高级语言 2.shell变量类型:事先确定数据的存储格式和长度 shell变量分为:字符型.数值型 数值型又分为:整 ...
- 视频压缩算法的相关知识
视频压缩算法的相关知识 MPEG-1 MPEG 视频压缩编码后包括三种元素:I帧(I-frames).P帧(P-frames)和B帧(B-frames).在MPEG编码的过程中,部分视频帧序列压缩成为 ...
- linux 格式化 dvd,linux 服务器分区格式化相关知识 -mount
关于linux 系统mount和mkfs 的相关知识: 使用mount 1)Mount的相关格式:mount [-t 文件类型][-o 选项] devicedir 详解: -t 文件类型,通常默认m ...
- WinForm开发,窗体显示和窗体传值相关知识总结
以前对WinForm窗体显示和窗体间传值了解不是很清楚 最近做了一些WinForm开发,把用到的相关知识整理如下 A.WinForm中窗体显示显示窗体可以有以下2种方法: Form.ShowDialo ...
- js基础--数据类型检测的相关知识
欢迎访问我的个人博客:www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了. 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件. 话不多说, ...
- 转载:关于错排的相关知识
转载:关于错排的相关知识 杭电2048相关知识充电 转自:错排公式 分类: 数论 关于程序2012-06-08 19:07 335人阅读 评论(0) 收藏 举报 n2 错排问题 错排问题 就是一种递推 ...
- VMware虚拟网络相关知识
VMware虚拟网络相关知识 虚拟网桥 通过虚拟网桥把虚拟机的虚拟网卡连接到宿主机的物理网卡上.通过它可以将虚拟机连接到宿主机所在的外部网络.如果宿主机上不止是一个物理网卡时,采用定制 ...
最新文章
- c语言中的普通字符包括什么,【判断题】C语言中的字符常量通常有两种形式:普通字符和转义字符。...
- 装修行业难互联网化?利润不合理并非本质,体制才是
- 后处理没有pui文件怎么打开_UG后处理添加具体步骤
- 实操|如何将 Containerd 用作 Kubernetes runtime
- 网络设备流量分析——ElastiFlow容器化部署与应用
- mysql优化20条原则
- php连接mysql的字符集问题_关于php7 设计链接mysqlutf8mb4字符集的问题
- VS2005进行WORD文档开发
- 引力波应该称为空间波
- java控制台输入输出
- 查看执行计划 oracle,查看Oracle执行计划的几种方法
- 【最后一天报名】数据科学峰会分论坛:供应链、用户增长、电商零售
- 计算机属性cmd命令,怎么用命令提示符打开系统属性
- 智慧交通云计算中心解决方案
- MonoX被偷袭?快准狠直击命门
- 目前计算机常用的CPU型号,价格差异太大了!教你选择CPU型号及常见CPU后缀字母详解...
- 纯css实现粒子效果
- Activiti 学习笔记十:开始活动节点(判断流程是否结束及查询历史)
- 计算机台式机快捷键开机,电脑快捷键如何快速开关机
- 从零开始的单片机学习(十二)
热门文章
- wkwebview 文件服务器,wkwebview开发常见问题(wkwebview加载本地沙盒文件)
- wkwebview替换uiwebview_UIWebView完美切换至WKWebView
- linux ubuntu软件中心,分享|App Grid:一个优秀的Ubuntu软件中心替代品
- 能力是被逼出来的!!有压力才有动力
- LogRobust Robust Log-Based Anomaly Detection on Unstable Log Data
- java解压zip文件
- 内存卡:V30 C10 U3 A2啥意思
- pts 和 tty 的区别
- 开源web漏洞扫描工具集合
- docker-compose 启动 提示failed to build: manifest for java:latest not found: manifest unknown: manifest