前后端分离、yapi和Knife4j
- 1.nginx访问量:5万+
- 2.mock:生成随机数据:
- 3.怎么生成假数据???(这是前端的活)
- 4.重启服务器,会导致正在运行的进程关闭。
- 5.有前缀的到后端,没有前缀的是静态资源。
- 6.vue是静态资源还是动态资源
- 7.基于nginx的动静分离:nginx的配置文件
- 8.yapi 部署。
- 9.json格式的接口文档:主要是为了导出导入。
- 10.Swagger介绍
- 11.Knife4j介绍:
- 12.knife4j配置文件:
- 13.Knife4j核心的注解,主要包含以下几个:
- 14.参数是一个实体类的话,类名@ApiModel,属性名@ApiModelProperty。
- 15.openapi导出是swagger.json文件,用于yapi的swagger.json导入。
- 16.虚拟机不稳定,挂起后或重启后,容易出现问题。所以不要老挂起。
- 17.“TS”是“Terminal Services”的缩写,意思是“终端服务”
- 18.Wiki的意思(yapi中有):
1.nginx访问量:5万+
2.mock:生成随机数据:
使前端脱离后端也能编程,方便前端开发测试使用.
3.怎么生成假数据???(这是前端的活)
根据我们想要的啥样产生相同类型的json数据,至于怎么产生,这个要我们自己来写,mock有自己的一套语法,可参考官网,比较简单。
4.重启服务器,会导致正在运行的进程关闭。
开发流程:
1. 定制接口: 这里的接口(API接口)是一个前后端对接规范,主要就是定义:请求路径、请求方式、请求参数、响应数据等内容
2. 前后端并行开发:
前端人员根据接口中定义的规范开发前端的代码,开发完毕之后,需要根据接口定义的参数进行Mock数据模拟测试
后端人员根据接口中定义的规范开发后端的代码,开发完毕之后,需要编写单元测试进行功能测试
3. 联调: 当前后端都开发完毕并且自测通过之后,就可以进行前后端的联调测试了,在这一阶段主要就是校验接口的参数格式
4. 提测: 前后端联调测试通过之后,就可以将项目部署到测试服务器,进行自动化测试了
5.有前缀的到后端,没有前缀的是静态资源。
6.vue是静态资源还是动态资源
Vue.js 是一套用于构建用户界面的渐进式JavaScript框架,我觉得是静态资源。
7.基于nginx的动静分离:nginx的配置文件
upstream tomcatserver{
server 192.168.136.129:8080;
server 192.168.136.129:8081;
ip_hash;
}
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html;
}
location ^~ /manage/ {
rewrite ^/manage/(.*)$ /$1 break;
proxy_pass http://tomcatserver;
}
location = /50x.html {
root html;
}
}
location ^~ /manage/ 表示匹配以指定请求路径开头的访问路径,localtion就是请求的url
rewrite ^/manage/(.*)$ /$1 break; 代表路径重写, 此时将原始的url路径重写为 `/$1`,这里的`$1`指代的就是通配符`(.*)`这一块的内容。
/manage/ employee/find -----------------> /employee/find
http://192.168.136.129/manage/employee/find ----> http://192.168.136.129/employee/find -----> http://192.168.91.129:8080/employee/find
注意事项:
1)路径重写:感觉跟riding jdbc差不多。
2)localtion就是请求的url
3)$1,是第一个匹配符。
8.yapi 部署。
还得装node.js啥的,前端干的。
http://t.csdn.cn/cZblc
9.json格式的接口文档:主要是为了导出导入。
10.Swagger介绍
https://swagger.io/
Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。功能主要包含以下几点:
- 使得前后端分离开发更加方便,有利于团队协作
- 接口文档在线自动生成,降低后端开发人员编写接口文档的负担
- 接口功能测试
11.Knife4j介绍:
swagger相当于jdbc,Knife4j相当于mybatis。Knife4j框架是基于Swagger的。
直接使用Swagger,需要按照Swagger的规范定义接口,实际上就是编写Json文件,编写起来比较繁琐、并不方便,。
所以我们一般会选择一些现成的框架来简化文档的编写,而这些框架是基于Swagger的,如knife4j。
knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。
12.knife4j配置文件:
@Configuration
@EnableSwagger2//开启Swagger
@EnableKnife4j//开启Knife4j
public class ReggieWebMvcConfig implements WebMvcConfigurer {
@Bean
public Docket createRestApi() {
// 配置生成的文档信息
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(new ApiInfoBuilder().title("瑞吉外卖").version("1.0").description("瑞吉外卖接口文档").build())
.select()
.apis(RequestHandlerSelectors.basePackage("com.itheima.reggie.controller"))
.paths(PathSelectors.any())
.build();
}
}
注意:basePackage:写的是controller层。
13.Knife4j核心的注解,主要包含以下几个:
注解 | 位置 | 说明 |
---|---|---|
@Api | 类 | 加载Controller类上,表示对类的说明 |
@ApiOperation | 方法 | 说明方法的用途、作用 |
@ApiImplicitParams | 方法 | 表示一组参数说明 |
@ApiImplicitParam | 方法 | 用在@ApiImplicitParams注解中,指定一个请求参数的各个方面的属性 |
@ApiModel | 类 | 描述实体类的作用 |
@ApiModelProperty | 属性 | 描述实体类的属性 |
注意:这里面有属性,name,value,required。
//删除菜单
@ApiOperation("删除菜单-------------------------------")
@ApiImplicitParams({
//name-参数名称,value-参数描述,required-是不是必要参数。
@ApiImplicitParam(name = "id",value = "分类id",required = true)
})
@DeleteMapping("/category")
public ResultInfo delete(long id) {
return categoryService.delete(id);
}
14.参数是一个实体类的话,类名@ApiModel,属性名@ApiModelProperty。
15.openapi导出是swagger.json文件,用于yapi的swagger.json导入。
16.虚拟机不稳定,挂起后或重启后,容易出现问题。所以不要老挂起。
17.“TS”是“Terminal Services”的缩写,意思是“终端服务”
18.Wiki的意思(yapi中有):
Wiki一词来源于夏威夷语的“wee kee”,原本是“快点”的意思。在这里Wiki指的是一种网上共同协作的超文本系统,可由多人共同对网站内容进行维护和更新。