苍穹外卖学习 Day 1
复习了软件开发流程
软件开发流程
需求分析(规格说明书+产品原型)
设计(系统包括数据库和接口等、UI)
编码(代码和测试)
测试(用例和报告)
上线运维(软件环境安装与配置)
Nginx
Nginx 关键词:反向代理、负载均衡、保护后端服务器、性能调优
打包好的项目文件放在index目录下,点击EXE文件运行,不能有中文目录
Nginx默认端口80,浏览器输入localhost就可访问
反向代理(网关)
-
前端请求地址与接口地址不一致
-
配置方式
upstream webservers{
server 192..(ip):8080 weight=90;
server 192..(ip):8080 weight=10;
}
server{
lsiten 80;
server_naem localhost;
location /api/{
proxy_pass http://webservers/admin/;#反向代理
}
}
- 负载均衡策略
maven分模块开发
架构图:
mapper复习
静态sql直接在mapper类中用注解的形式
动态sql采用mapper映射文件
自定义异常
出现不存在用户的情况,就可以设置一个不存在用户异常,还有许许多多其他特殊情况的异常,这些异常都继承于baseException;再设置一个handler,来捕获这些异常,发出警告日志等
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
/**
捕获业务异常
@param ex
@return
*/
@ExceptionHandler
public Result exceptionHandler(BaseException ex){
log.error("异常信息:{}", ex.getMessage());
return Result.error(ex.getMessage());
}
}
jwt令牌
登录功能完善
- 密码MD5加密
password = DigestUtils.md5DigestAsHes(password.getBytes());
if(!password.equals(employee.getPassword())){
//密码错误
throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR)
}
接口管理
通过网站Yapi
接口测试
只要按照它的规范定义接口,就能一键导出接口文档以及在线调试接口页面
- 导入maven
<dependency>
<groupId>com.github.xiaomin</groupId>
<aritifactId>knife4j-spring-boot-starter</aritifactId>
<version>3.0.2</version>
<dependency>
- WebMvcConfiguration配置类加入knife4j
@Bean
public Docket docket(){
ApiInfo apiInfo = new ApiInfoBuilder()
.title("苍穹外卖接口文档")
.version("2.0")
.description("苍穹外卖项目接口文档")
.build();
Docket docket = new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo)
.select()
//指定生成接口所需要扫描的包
.apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
.paths(PathSelectors.any())
.build();
return docket;
}
- WebMvcConfiguration配置类中设置静态资源映射(应该也可以在yml里面改),否则相关接口文档页面无法访问
protected void addResourceHandlers(ResourceHandlerRegistry registry){
log.info("开始设置静态资源映射...");
registry.addResourceHandler("/doc.html").addResourceLocations("classPath:/META-INF/resources");
registry.addResourceHandler("/webjars/**").addResourceLocations("classPath:/META-INF/resources/webjars/");
}
- 访问localhost:8080/doc.html
- swagger常用注解(Api需要加上args)