1.分层

  1. 表现层(Controller)@Controller
    • 接收客户端 HTTP 请求,解析请求信息。
    • 按请求分发到对应业务逻辑处理方法。
    • 封装业务结果为 HTTP 响应返回给客户端。
  2. 业务逻辑层(Service)@Service
    • 实现具体业务逻辑,如数据验证与计算。
    • 按需调用数据访问层获取或更新数据。
    • 管理业务操作的事务。
  3. 数据访问层(DAO)@Repository
    • 和数据库交互,执行增删改查操作。
    • 封装参数成 SQL 语句并执行。
    • 将查询结果封装成对象返回。
  4. 数据库层
    • 存储应用程序的数据。

2.开发

在启动类文件夹下创建以下文件夹

  1. bean:基本类型
  2. configuration:配置类
  3. controller:控制层
  4. dao:数据库交互层
  5. service:服务层
  6. 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 次。

  1. options 请求:预检请求。浏览器会先发送 options 请求,询问服务器是否允许当前域名进行跨域访问
  2. 真正的请求:POST、DELETE、PUT 等

以前的东西,必须完全一样,一个字母不一样都不行。浏览器才能把请求(ajax)发出去。

前端解决:proxy

devServer: {
    proxy: {
      '/api': {
        target: '<url>',
        changeOrigin: true
      }
    }
}

后端解决:cors(允许前端跨域即可)

请求映射前添加注解:

@CrossOrign

原理:服务器给浏览器的响应头中添加字段:Access-Control-Allow-Origin=*

天下繁华,唯有一心
最后更新于 2025-03-17