前后端分离项目开发规范
目录一、前后端分离开发模式二、Restful风格的接口规范三、工程搭建四、前后端联调测试五、springboot项目的配置文件application.yaml/yml文件六、记录日志七、全局异常处理器一、前后端分离开发模式前端项目需要独立部署在前端服务器上nginx后端项目也需要独立步数在后端服务器上Tomcat前端需要向后端发起请求获取数据而后端向前端响应数据→需要共同遵守同一份接口文档依据页面原型需求说明→设计API接口文档具体开发流程需求分析→接口设计API接口文档→前后端并行开发→测试前后端自己单独测试功能接口Postman、Apifox→前后端联调测试ApifoxPostmanSwaggerMockJMeter二、Restful风格的接口规范URL定义资源Http请求方式描述操作GET查询、POST新增、PUT修改、DELETE删除在Controller层接收请求并返回响应的数据 在方法上面加RequstMapping(/路径)注解 // RequstMapping 不会限定请求方式但GetMapping限定只能发送GET请求三、工程搭建1、创建SpringBoot工程并引入web开发起步依赖、mybatis、mysql驱动、lombok2、创建数据库表dept并在application.yml中配置数据库基本信息3、准备基础代码结构并引入实体类及统一的响应结果封装类ResultData public class Result{ private Integer code; //编码1成功0失败 private String msg; //错误信息 private Object data; //数据 public static Result success(){ Result result new Result(); result.setCode(1); result.setMsg(success); return result; } public static Result success(Object data){ Result result new Result(); result.setCode(1); result.setMsg(success); result.setData(data); return result; } public static Result error(String msg){ Result result new Result(); result.setCode(0); result.setMsg(msg); return result; } }每次创建完一个空项目需要检查一下JDK版本项目结构SDK和语言以及Maven的路径Settings→Build→Build toosl项目字符集Settings→Editor→file Encodings→project Encoding utf-8四、前后端联调测试前端工程发送Ajax请求请求服务器的地址为http://localhost:90/api/depts是如何访问到后端的Tomcat服务器的→Nginx的反向代理//Nginx/conf/nginx.conf配置文件 server{ listen:90(前端服务器的端口); //这个是nginx服务器监听的端口号 #省略... location ^~/api/{ //location用于定义路径匹配规则表示只能匹配以/api/开头的路径 rewrite ^/api/(.*)$ /$1 break; //用于重写匹配到的路径 proxy_pass http://localhost:8080(后端服务器的端口); //代理转发将匹配到的请求转发给后端服务器 } }//前端的请求路径http://localhost:90/api/depts //后端收到的请求路径http://localhost:8080/depts五、springboot项目的配置文件application.properties文件是键值对形式→臃肿层次结构不清晰application.yaml/yml文件数值前边必须有空格使用缩进表示层级关系只能用空格缩进不能tab。空格数目不重要只要对齐即可表示注释从这个字符一直到行尾都会被解析器忽略配置文件还能定义对象/Map集合数组/List/Set集合#定义对象/Map集合 user: name: 张三 age: 18 sex: 男 #定义数组/List/Set集合 list: - 张三 - 李四 - 王五spring: application: name: springboot-mybatis-quickstart #数据库连接池 datasource: type: com.alibaba.druid.pool.DruidDataSource url: jdbc:mysql://localhost:3306/web01 username: root password: TY168fafafa driver-class-name: com.mysql.cj.jdbc.Driver # mybatis相关配置 mybatis: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath:mapper/*.xml六、记录日志Slf4j提供日志操作的标准接口及抽象类是一种规范具体实现是Log4j 或者 Logback框架Logback快速入门1、引入logback的依赖和配置文件logback.xml?xml version1.0 encodingUTF-8? configuration !-- 控制台输出 -- appender nameSTDOUT classch.qos.logback.core.ConsoleAppender encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder !-- 格式化输出%d 表示日期%thread 表示线程名%-5level表示级别从左显示5个字符宽度%logger显示日志记录器的名称 %msg表示日志消息%n表示换行符 -- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern /encoder /appender !-- 系统文件输出 -- appender nameFILE classch.qos.logback.core.rolling.RollingFileAppender rollingPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy !-- 日志文件输出的文件名, %i表示序号 -- FileNamePatternD:/tlias-%d{yyyy-MM-dd}-%i.log/FileNamePattern !-- 最多保留的历史日志文件数量 -- MaxHistory30/MaxHistory !-- 最大文件大小超过这个大小会触发滚动到新文件默认为 10MB -- maxFileSize10MB/maxFileSize /rollingPolicy encoder classch.qos.logback.classic.encoder.PatternLayoutEncoder !-- 格式化输出%d 表示日期%thread 表示线程名%-5level表示级别从左显示5个字符宽度%msg表示日志消息%n表示换行符 -- pattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}-%msg%n/pattern /encoder /appender !-- 日志输出级别 -- root levelALL //具体要输出哪些日志 OFF表示不输出日志 appender-ref refSTDOUT/ //日志往哪输出 appender-ref refFILE/ /root /configuration2、定义日志记录对象调用方法debug/info/…记录日志private static final Logger logLoggerFactory.getLogger(当前类名.class);但是Lombok底层已经帮我们创建好了日志记录对象我们只需要在类上加Slf4j注解即可日志级别1、debug记录程序的调试信息2、info记录正常系统运行日志重要信息3、error记录错误异常信息七、全局异常处理器RestControllerAdviceControllerAdviceResponseBody