1.分层
- 表现层(Controller)@Controller
- 接收客户端 HTTP 请求,解析请求信息。
- 按请求分发到对应业务逻辑处理方法。
- 封装业务结果为 HTTP 响应返回给客户端。
- 业务逻辑层(Service)@Service
- 实现具体业务逻辑,如数据验证与计算。
- 按需调用数据访问层获取或更新数据。
- 管理业务操作的事务。
- 数据访问层(DAO)@Repository
- 和数据库交互,执行增删改查操作。
- 封装参数成 SQL 语句并执行。
- 将查询结果封装成对象返回。
- 数据库层
- 存储应用程序的数据。
2.开发
在启动类文件夹下创建以下文件夹
- bean:基本类型
- configuration:配置类
- controller:控制层
- dao:数据库交互层
- service:服务层
- common:存放通用的工具类、常量类、基础实体类以及统一返回结果类等
controller层调用service层,service调用dao层或者本层
3.请求映射
- @RequestMapping:通用注解,可指定请求URL、方法、参数等。
- @GetMapping:@RequestMapping(method = GET) 简写,处理GET请求。
- @PostMapping:@RequestMapping(method = POST) 简写,处理POST请求。
- @PutMapping:@RequestMapping(method = PUT) 简写,用于更新资源。
- @DeleteMapping:@RequestMapping(method = DELETE) 简写,用于删除资源。
- @PatchMapping:@RequestMapping(method = PATCH) 简写,用于部分更新资源。
4.统一返回类型
在上述实现的 RESTful 风格统一返回数据结构中,返回的是 Result<T> 类的实例,该类包含以下信息:
状态码(code):一个整数,用于表示请求的处理结果状态。例如,200 表示成功,500 表示服务器内部错误。
消息(message):一个字符串,用于描述请求处理结果的详细信息。例如,”成功” 或 “查询失败: 数据库连接错误”。
数据(data):泛型类型 T,用于携带实际的业务数据。当请求成功时,可能会包含查询到的员工信息;当请求失败时,data 通常为 null。
5.跨域问题(重点)
跨源资源共享(CORS)(Cross-Origin Resource Sharing)
浏览器为了安全,默认会遵循同源策略(请求要去的服务器和当前项目所在的服务器必须是同一个源 [同一个服务器]),如果不是,复杂的跨域请求会发送 2 次。
- options 请求:预检请求。浏览器会先发送 options 请求,询问服务器是否允许当前域名进行跨域访问
- 真正的请求:POST、DELETE、PUT 等
- 浏览器页面所在的:http://localhost /employee/base
- 页面上要发去的请求:http://localhost:8080 /api/v1/employees
以前的东西,必须完全一样,一个字母不一样都不行。浏览器才能把请求(ajax)发出去。
前端解决:proxy
devServer: {
proxy: {
'/api': {
target: '<url>',
changeOrigin: true
}
}
}
后端解决:cors(允许前端跨域即可)
请求映射前添加注解:
@CrossOrign
原理:服务器给浏览器的响应头中添加字段:Access-Control-Allow-Origin=*
Comments NOTHING