【Spring Boot】控制器Controller方法

Controller

Spring Boot 的Web应用中,Controller是处理HTTP请求的入口。

核心职责

  • 接受客户端发送的HTTP请求
  • 调用 Service 层完成业务逻辑
  • 将处理结果封装后返回给客户端

MVC (Model-View-Controller)中的"C"

如何定义Controller

在 Spring Boot 中,使用注解来声明一个类是 Controller。
示例代码

java 复制代码
@RestController
@RequestMapper("/api/members")
public class MemberController{
	// 方法
}

注解说明

@RestController 告诉Spring,这是一个用于RESTful API 的控制器,所有方法的返回值都会自动转为 JSON。

@RequestMapping 定义该控制器的公共请求前缀

Controller 方法

每个 Controller 方法,对应一个具体的HTTP接口。
基本结构

java 复制代码
@HTTP_METHOD_MAPPING("路径")
public 返回类型 方法名(参数){
	// 1. 接收参数
	// 2. 调用 Service
	// 3. 返回结果
}

HTTP_METHOD_MAPPING

这些是 @RequestMapping(method = ...)的简写

路径

路径中可以用 {变量名}表示动态部分

复制代码
@GetMapping("/projects/{projectId}/members")

参数的接收方式

Spring Boot 提供多种注释,自动将 HTTP 请求中的数据绑定到方法参数。

示例

复制代码
@GetMapping("/list/{projectId}")
public Result<List<MemberVO>> list(@PathVariable Long projectId) {
    // 从 URL 路径中提取 projectId
}

@PostMapping("/create")
public Result<MemberVO> create(@RequestBody CreateMemberDTO dto) {
    // 从 JSON 请求体中解析出 dto 对象
}

@GetMapping("/search")
public Result<List<MemberVO>> search(
    @RequestParam String keyword,
    @RequestParam(defaultValue = "1") Integer page
) {
    // 从 ?keyword=xxx&page=2 中获取参数
}

返回值

@RestController中,任何返回值都会被自动转为 JSON

可以使用统一返回格式 ,如 Result<T>,这样前端收到的总是结构统一的JSON,便于处理。

执行流程

当发送一个HTTP请求时,Spring Boot 内部的请求为:

  1. 前端控制器接收所有请求;
  2. 根据 URL 和 HTTP 方法,查找匹配的 Controller 方法(通过 @GetMapping等注释);
  3. 解析参数;
  4. 调用方法;
  5. 返回值序列化为 JSON,写入 HTTP 响应;
  6. 返回给客户端。
相关推荐
Dolphin_Home2 小时前
从理论到实战:图结构在仓库关联业务中的落地(小白→中级,附完整代码)
java·spring boot·后端·spring cloud·database·广度优先·图搜索算法
zfj3212 小时前
go为什么设计成源码依赖,而不是二进制依赖
开发语言·后端·golang
醇氧2 小时前
org.jetbrains.annotations的@Nullable 学习
java·开发语言·学习·intellij-idea
Java&Develop2 小时前
Aes加密 GCM java
java·开发语言·python
weixin_462446232 小时前
使用 Go 实现 SSE 流式推送 + 打字机效果(模拟 Coze Chat)
开发语言·后端·golang
JIngJaneIL2 小时前
基于springboot + vue古城景区管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
专注VB编程开发20年3 小时前
C#全面超越JAVA,主要还是跨平台用的人少
java·c#·.net·跨平台
小信啊啊3 小时前
Go语言切片slice
开发语言·后端·golang
南_山无梅落3 小时前
9.Python3集合(set)增删改查和推导式
java·开发语言