day2
📌 Day 2:Spring Boot Controller 和基础 API
目标:学习 Spring MVC 控制器 的用法,包括 RESTful API 开发、参数传递、JSON 处理和 API 文档生成。
1️⃣ @RestController vs @Controller
Spring 提供了两种方式来定义 Controller(控制器):
(1)@RestController
@RestController = @Controller + @ResponseBody,用于返回 JSON 数据,常用于 REST API。
📌 示例:
@RestController
@RequestMapping("/api")
public class HelloRestController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring Boot!";
}
}
📌 访问 http://localhost:8080/api/hello,返回文本:
Hello, Spring Boot!
(2)@Controller
@Controller 主要用于 MVC 页面渲染,返回 HTML/JSP 视图。
📌 示例:
@Controller
@RequestMapping("/view")
public class HelloController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, Spring Boot!");
return "hello"; // 视图名称,对应 resources/templates/hello.html
}
}
📌 访问 http://localhost:8080/view/hello,会渲染 hello.html 页面。
📌 总结:
| 注解 | 适用场景 | 返回类型 |
|---|---|---|
@RestController |
开发 RESTful API | JSON / String |
@Controller |
传统 MVC 页面渲染 | HTML/JSP 页面 |
2️⃣ GET / POST / PUT / DELETE 的使用
Spring Boot 提供了 四种常见 HTTP 请求方式:
📌 示例 Controller
@RestController
@RequestMapping("/api/user")
public class UserController {
// GET 请求,查询用户信息
@GetMapping("/{id}")
public String getUser(@PathVariable int id) {
return "User ID: " + id;
}
// POST 请求,创建新用户
@PostMapping
public String createUser(@RequestBody Map<String, Object> user) {
return "User Created: " + user.get("name");
}
// PUT 请求,更新用户信息
@PutMapping("/{id}")
public String updateUser(@PathVariable int id, @RequestBody Map<String, Object> user) {
return "User ID " + id + " Updated: " + user.get("name");
}
// DELETE 请求,删除用户
@DeleteMapping("/{id}")
public String deleteUser(@PathVariable int id) {
return "User ID " + id + " Deleted";
}
}
📌 测试 API(使用 Postman / curl / Swagger):
- GET
/api/user/1→"User ID: 1" - POST
/api/user{ "name": "Tom" }→"User Created: Tom" - PUT
/api/user/1{ "name": "Jerry" }→"User ID 1 Updated: Jerry" - DELETE
/api/user/1→"User ID 1 Deleted"
3️⃣ 参数传递方式
Spring Boot 提供 3 种常见的参数传递方式。
(1)@RequestParam 传递查询参数
用于 GET 请求,参数直接跟在 URL 后面。
📌 示例:
@RestController
@RequestMapping("/api")
public class ParamController {
@GetMapping("/greet")
public String greet(@RequestParam String name) {
return "Hello, " + name + "!";
}
}
📌 访问 http://localhost:8080/api/greet?name=Tom
Hello, Tom!
(2)@PathVariable 传递路径参数
用于 RESTful 风格的 URL。
📌 示例:
@RestController
@RequestMapping("/api")
public class PathVariableController {
@GetMapping("/user/{id}")
public String getUser(@PathVariable int id) {
return "User ID: " + id;
}
}
📌 访问 http://localhost:8080/api/user/10
User ID: 10
(3)@RequestBody 传递 JSON 数据
用于 POST/PUT 请求,接收 JSON 格式的请求体。
📌 示例:
@RestController
@RequestMapping("/api")
public class RequestBodyController {
@PostMapping("/user")
public String createUser(@RequestBody Map<String, Object> user) {
return "User Created: " + user.get("name");
}
}
📌 POST 请求(JSON 数据):
{
"name": "Alice",
"age": 25
}
📌 返回:
User Created: Alice
4️⃣ 返回 JSON 数据(FastJSON / Jackson)
Spring Boot 默认使用 Jackson 处理 JSON,但也可以使用 FastJSON。
(1)使用 Jackson(默认)
📌 示例:
@RestController
@RequestMapping("/api")
public class JsonController {
@GetMapping("/user")
public User getUser() {
return new User(1, "Tom", 25);
}
}
📌 返回 JSON:
{
"id": 1,
"name": "Tom",
"age": 25
}
(2)使用 FastJSON
第一步:引入 FastJSON 依赖(pom.xml)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
第二步:修改 Controller
import com.alibaba.fastjson.JSON;
@RestController
@RequestMapping("/api")
public class FastJsonController {
@GetMapping("/user")
public String getUser() {
User user = new User(1, "Tom", 25);
return JSON.toJSONString(user);
}
}
5️⃣ Swagger3 API 文档集成
Swagger 是 自动生成 API 文档 的工具。
(1)添加依赖
📌 修改 pom.xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version>
</dependency>
(2)配置 Swagger
📌 创建 SwaggerConfig.java
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.oas.annotations.EnableOpenApi;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
@Configuration
@EnableOpenApi
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.OAS_30)
.select()
.apis(RequestHandlerSelectors.basePackage("com.example.demo.controller"))
.paths(PathSelectors.any())
.build();
}
}
(3)访问 API 文档
📌 启动项目后,打开 Swagger UI: 👉 http://localhost:8080/swagger-ui/
6️⃣ 练习题
📝 练习 1:创建 /api/sum?a=5&b=10,返回 a+b 的和
📝 练习 2:创建 PUT /api/user/{id},更新用户信息
📝 练习 3:集成 Swagger 并测试 API
✅ 恭喜!你掌握了 Spring Boot API 开发!🎉
📌 明天(Day 3)学习 Spring Boot 数据库 MyBatis!

浙公网安备 33010602011771号