关于sky-take-out(反向代理nginx配置、swagger接口文档)
sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块
sky-common 子模块,存放公共类,例如:工具类、常量类、异常类等
sky-pojo 子模块,存放实体类、VO、DTO等
sky-server 子模块,后端服务,存放配置文件、Controller、Service、Mapper等
Entity 实体,通常和数据库中的表对应
DTO 数据传输对象,通常用于程序中各之间传递数据
VO 视图对象,为前端展示数据提供的对象
POJO 普通Java对象,只有属性和对应的getter和setter
关于数据库数据导入server-->data import --> import from self选择文件位置切换到import progress然后开始导入
类上加上@Builder注解就可以用调用build方法来实例化对象就不用new了,并且直接拿来调用方法XX.builder().方法().build() 把这个对象构建好
nginx 反向代理:就是将前端发送的动态请求由 nginx 转发到后端服务器
nginx 反向代理的好处:1.提高访问速度 2.进行负载均衡
所谓负载均衡,就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器
**nginx 反向代理的配置方式 ** nginx.conf
发送来的请求能够匹配上api这个字符串,使用proxy_pass转发到后端这个地址
包括api/包括之前的都替换为后面的字符串
server{
listen 80;
server_name localhost;
location/api/{
proxy_pass http://localhost:8080/admin/; #反向代理
}
}
**nginx 负载均衡的配置方式 **同样都是conf
upstream webservers{
server 192.168.100.128:8080;
server 192.168.100.129:8080;
}
server{
listen 80;
server_name localhost;
location /api/ {
proxy_pass http://webservers/admin/;#负载均衡
}
}
关于用户的登录信息是明文存储在数据库,安全性太低。可以加密后存储
使用md5加密方式 只能单向的,只能加密不能解密
所以只能把明文密码进行加密然后比对密文,看能否比对的上
使用spring提供的DigestUtils工具类调用第一个md5AsHex(password.getBytes());
一定要将密码转化为bytes的字节模式
**导入接口文档**这个knife4j可以动态生成本地接口文档
http://localhost:8080/doc.html#/home
接口平台有很多种,YApi这里我使用的Apikit
Swagger生成后端接口,用于接口测试
Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案
1.导入 knife4j的maven坐标(也就是导入依赖)
2.在配置类中加入 knife4j相关配置
3.设置静态资源映射,否则接口文档页面无法访问
放在config文件夹下起名WebMvcConfiguration
配置类
@Bean
public Docket docket(){
Apilnfo apilnfo = new ApilnfoBuilder()
.title("苍穹外卖项目接口文档")
.version(“2.0”)
.description(“苍穹外卖项目接口文档")
.build();
Docket docket = new Docket(DocumentationType.SWAGGER_2) //这个swagger_2也就是版本
.apilnfo(apiInfo)
.select()
//指定生成接口需要扫描的包
.apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
/**
*设置静态资源映射
*@param registry
**/
protected void addResourceHandlers(ResourceHandlerRegistry registry){
log.info(“开始设置静态资源映射…");
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/METAINF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
关于swagger有很多常用的注解 (主要是阅读接口文档的时候更清晰)
注解 说明
@Api(tags="") 用在类上,例如Controller,表示对类的说明(描述当前类的作用)
@ApiModel 用在类上,例如entity、DTO、VO
@ApiModelProperty 用在属性上,描述属性信息
@ApiOperation(value="") 用在类的方法上,例如Controller的方法,说明方法的用途、作用(描述方法功能、value可以省略)