前沿
后端时代:前端只管静态页面,html==>后端 模板引擎JSP后端为主力
前后分离时代
- 后端:后端控制层 ,服务层,数据访问层
- 前端:前端控制层,数据访问层
- 伪造后端数据 json
- 前后端如何交互===>ApI
- 前后端相对独立 ,松耦合
- 前后端还可以部署在不同的服务器上
问题产生
- 前后端集成联调,前后端人员无法做到“及时协商,进早解决”
解决办法:
- 首先制定schema[计划刚要] 实时更新最新的api降低集成的api
- 早些年 指定word计划文档
前后端分离
- 前端测试后端接口postman
- 后端提供接口 ,需要实时更新最新的消息以及改动
Swagger 诞生
1:比较流行的api文档
2:Restful Api文档在线自动生成工具 => api文档于api定义同步更新
3:直接运行可以在线测试api接口
4:支持多重语言
Swagger官网:https://swagger.io/
在线项目需要使用springbox
- swagger2
- ui
快速搭建Swagger
swagger的maven依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
搭建springBoot启动测试项目
@RestMapping("/hello")
@ResponseBody()
public String hello(){
return "hello SpringBoot";
}
配置Swagger==>config
@Configuration
@EnableSwagger2 //开启swagger2
public class SwaggerConfig(){
//配置相关信息
}
@Configuration
@EnableSwagger2 //开启swagger2
public class SwaggerConfig(){
@Bean//bean实例
public Docket docket(){
return new Docket(Documentationtype.SWAGGER_2)
.apiInfo(apiInfo)
.enable()
//enable 是否启动swagger若为false这在浏览器中不能访问swagger
.select()
//RequestHandlerSelectors 配置要扫描的接口的方式
//any() 都扫描
//none() 不扫描
// basepackage:指定要扫描的包
//withClassAnnotation:扫描类上的注解参数是一个注解的反射
//withMethodAnnotation:扫描方法上的注解
.apis(RequestHandlerSelectors.basepackage("com.swagger.controller")
//paths 指过滤的路径
.paths()
.build();
}
//配置swagger的相关信息
private ApiInfo apiInfo(){
//作者信息
Contact contact =new Contat (name="",url="", email="");
return new ApiInfo(
title="Swagger 的标题",
description="内容描述",
version="",
contact,
license="",
licenseUrl="",
new ArrayList()
);
}
}
面试题
希望Swagger仅在生产环境中使用在发布的时候不用
- 判断是不是生产环境 flag=true
- 注入enable(flag)
//在docket中要传入Environment 参数
//设置要显示的swagger环境
Profile profiles = Profiles.of("test","dev");
//判断是否在当前的设定环境中
boolean flag=environment.acceptsProfile(profiles);