Swagger笔记
时间:2021-10-10
本文章向大家介绍Swagger笔记,主要包括Swagger笔记使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Swagger
学习目标
- 了解Swagger的作用和概念
- 了解前后端分离
- 在SpringBoot中集成Swagger
Swageer简介
前后端分离
Vue + SpringBoot
后端时代:前端只用管理静态页面;html==>后端. 模版引擎 JSP=>后端是主力
- 后端:后端控制层,服务层,数据访问层
- 前端:前端控制层,视图层
- 伪造后端数据,json。已经存在了,不需要后端,前端工程依然能跑起来
- 前端如何交互?==>API
- 前后端相对独立,松耦合;
- 前后端甚至可以部署在不同的服务器上
产生一个问题:
前后端集成联调,前端人员和后端人员无法做到“即时协调,尽早解决”最终导致问题爆发
解决方案:
- 首先指定scheme[计划提纲],实时更新最新的API,降低集成的风险;
- 早些年:指定word计划文档;
- 前后端分离;
- 前端测试后端接口:postman
- 后端提供接口,需要实时更新最新的消息及改动
Swagger
- 号称世界上最流行的Api框架;
- RestFull Api 文档在线自动生成工具->Api文档与API定义同步更新
- 直接运行,可以在线测试API接口
- 支持多种语言(Java Php..)
在项目中使用Swagger需要 springbox;
- swagger2
- Ui
SpringBoot集成Swagger
1.新建一个Springboot-web项目
2.导入相关依赖
<!--swagger2-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${swagger.version}</version>
</dependency>
<!--swagger-ui-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${swagger.version}</version>
</dependency>
3.编写一个Hello工程
4.配置Swagger=>Config
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.movie.api.controller"))
.paths(PathSelectors.any())
.build()
.apiInfo(new ApiInfoBuilder().title("movie电影系统 - api文档").version("v1.0").build());
}
}
Swagger配置扫描接口
@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
@Bean
public Docket docket(){
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("com.movie.api.controller"))//RequestHandlerSelectors配置要扫描的接口方法
.paths(PathSelectors.any())//过滤
.build()//工厂模式
.apiInfo(new ApiInfoBuilder().title("朝歌电影系统 - api文档").version("v1.0").build());
}
}
配置是否启动Swagger
我只希望Swagger在生产环境中使用,在发布的时候不使用
- 判断是不是生产环境 flag = false
- 注入enable(flag)
配置Api文档
如何配置多个分组;多个Docket实例即可
@Bean
public Docket docket1(){
return new Docket(DocumentationType.SWAGGER_2).groupName("A");
}
@Bean
public Docket docket2(){
return new Docket(DocumentationType.SWAGGER_2).groupName("B");
}
@Bean
public Docket docket3(){
return new Docket(DocumentationType.SWAGGER_2).groupName("C");
}
如何内嵌Swagger文档
前端配置config.js
//自定义的配置文件
const config = {
//后端api地址
API_URL: "http://localhost:8888/api",
};
export default config
前端导入
<script>
import config from "@/config";
export default {
data(){
return{
url: config.SWAGGER_URL,
}
}
}
</script>
总结:
1.我们可以通过Swagger给一些比较难理解的属性或接口,增加注释信息
2.接口文档实时更新
3.可以在线测试
Swagger是一个优秀的工具,几乎所有大公司都有使用它
「注意点」在正式发布的时候,关闭Swagger!!出于安全考虑。而且节省运行时内存.。
原文地址:https://www.cnblogs.com/cfs322/p/15388700.html
- 安装Ubuntu时分区选择
- linux系统下安装两个或多个tomcat
- JS魔法堂:不完全国际化&本地化手册 之 实战篇
- scala + intellij idea 环境搭建及编译、打包
- Angular企业级开发(2)-搭建Angular开发环境
- JS魔法堂:不完全国际化&本地化手册 之 拓展篇
- 使用jQuery的animate方法制作滑动菜单
- jenkins 入门教程(下)
- CSS3制作心形头像
- CSS魔法堂:重拾Border之——不仅仅是圆角
- scala 学习笔记(01) 函数定义、分支、循环、异常处理、递归
- java之log4j的配置
- scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
- scala 学习笔记(04) OOP(上)主从构造器/私有属性/伴生对象(单例静态类)/apply方法/嵌套类
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 移动硬盘显示盘符但是打不开,提示加密
- GORM V2 模型定义、约定、标签
- 字符串:简单的反转还不够!
- TypeScript 实战算法系列(七):实现图的遍历
- 63. Vue MUI的基本使用
- 初学web自动化测试--笔记1
- R语言作图——Line plot with error
- Python自学成才之路 玩转虚拟环境
- 基于腾讯云的 Rust 和 WebAssembly 函数即服务
- 谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」
- Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案
- 社区开源框架预制件相关模块:CollectManager详解
- Kettle构建Hadoop ETL实践(三):Kettle对Hadoop的支持
- 3种 Springboot 全局时间格式化方式,别再写重复代码了
- 一文搞懂CDN加速原理