环境搭建
1.项目工程搭建
和以往项目一样,首先我们需要搭一个父工程guli_parent,我们在其pom.xml文件中声明这是一个pom文件,并配置
接着我们在父模块下搭建子模块service,添加项目需要的依赖
1 | <dependencies> |
接着搭建子子模块service_edu,也就是我们的讲师管理模块。
在resources目录下创建文件 application.properties
1 | # 服务端口 |
2.利用MP反向生成代码
在service_edu模块下的test/java目录下创建包com.atguigu.eduservice,创建代码生成器:CodeGenerator.java
1 | public class CodeGenerator { |
MybatisPlus的代码生成器会帮我们创建好基本结构及代码
3.统一返回数据格式
项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致、轻松。
一般情况下,统一返回数据格式没有固定的格式,只要能描述清楚返回的数据状态以及要返回的具体数据就可以。但是一般会包含状态码、返回消息、数据这几部分内容。
此项目中我们定义统一结果:
1 | { |
由于这个结果是统一通用的,我们需要建一个新的模块来存放通用的一些类和工具。
在父工程下创建子模块common,接着创建子子模块common-utils。
创建接口定义返回码 ResultCode.java
1 | package com.atguigu.commonutils; |
创建结果类R.java
1 |
|
4.编写后台管理api接口
首先讲师管理工程是Spring boot工程,启动类我们就不过多赘述。接着我们还需要创建配置类EduConfig来配置需要的插件。
1 |
|
接着我们在EduTeacherController中开发讲师的api后台接口
1 |
|
我们运行工程在浏览器中进行测试,我们发现浏览器只能测试get请求,Post请求需要借助工具进行测试。
之前我们介绍过Postman的使用,这次我们介绍一个新工具Swagger,无需安装,Maven中导入即可在工程中使用。
Swagger2使用介绍
1.Swagger2介绍
前后端分离开发模式中,api文档是最好的沟通方式。
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
- 及时性 (接口变更后,能够及时准确地通知相关前后端开发人员)
- 规范性 (并且保证接口的规范性,如接口的地址,请求方式,参数及响应格式和错误信息)
- 一致性 (接口信息一致,不会出现因开发人员拿到的文档版本不一致,而出现分歧)
- 可测性 (直接在接口文档上进行测试,以方便理解业务)
2.配置Swagger2
在common模块中创建子模块service-base,引入Swagger2的依赖
1 | <!--swagger--> |
在模块service-base中,创建swagger的配置类
1 |
|
接着在模块service模块中引入service-base
这里需要注意一个点,我们在运行service_edu主启动类时spring boot默认扫描的是主启动类所在位置及其子文件夹。如果该工程导入了另一个工程,spring boot是默认不会扫描导入工程的启动类的。因此我们需要在service-edu启动类上添加注解
即扫描com.atguigu中所有的子文件夹,这样就能扫描到刚刚配置的Swagger配置类了。
我们访问:http://localhost:8001/swagger-ui.html 即可进行接口测试
3.接口和参数说明
在实际开发中,我们往往需要用中文来使得接口功能更加易懂,我们可以添加以下注解。
定义在类上:@Api
定义在方法上:@ApiOperation
定义在参数上:@ApiParam
例如:
1 |
|
讲师接口开发
1.分页
首先我们需要在配置类中配置分页插件(之前已配过)
接着在EduTeacherController中编写接口
1 | //讲师列表分页 |
2.新增和修改
这里主要就是回顾之前的MybatisPlus的自动填充封装。
我们在实体类添加自动填充注解:
1 |
|
在service-base模块中创建包handler,创建自动填充类 MyMetaObjectHandler
1 |
|
controller方法定义
1 | //新增讲师 |
异常和日志处理
1.异常处理
1.1统一异常
在service-base中创建统一异常处理类GlobalExceptionHandler.java
1 | /** |
但凡程序抛出异常,就会执行此方法。
1.2特定异常
如处理除0的异常,GlobalExceptionHandler.java中添加
1 |
|
1.3自定义异常
创建自定义异常类
1 | //生成get,set方法 |
业务中需要的位置抛出GuliException
1 | try { |
添加异常处理方法
1 |
|
测试
2.日志处理
2.1配置日志级别
日志记录器(Logger)的行为是分等级的。如下表所示:
分为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
默认情况下,spring boot从控制台打印出来的日志级别只有INFO及以上级别,可以配置日志级别
1 | # 设置日志级别 |
2.2Logback日志
spring boot内部使用Logback作为日志实现的框架。
Logback和log4j非常相似,如果你对log4j很熟悉,那对logback很快就会得心应手。
(1)删除application.properties中的日志配置
(2)resources 中创建 logback-spring.xml
1 |
|
(3)类上添加注解 @Slf4j
接着就可以和log4j一样输出日志到控制台和指定路径的文件了。