Files
springboot-demo/src/main/java/com/example/demo/controller/LearnController.java
likingcode 539dc41868 feat: Spring Boot示例项目
- 基础Spring Boot配置
- Docker支持
2026-03-07 05:43:15 +00:00

116 lines
3.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
/**
* 学习示例控制器
*
* 学习点:
* - 各种参数接收方式
* - 配置注入
* - 响应格式
*/
@RestController
public class LearnController {
// 从配置文件注入值
@Value("${spring.application.name:demo}")
private String appName;
/**
* 根路径 - 重定向到学习中心
*/
@GetMapping("/")
public Map<String, Object> root() {
Map<String, Object> info = new HashMap<>();
info.put("message", "欢迎来到 Spring Boot 学习脚手架!");
info.put("learn", "https://spring.xiaoxiaoluohao.indevs.in/learn");
info.put("aop", "https://spring.xiaoxiaoluohao.indevs.in/aop");
info.put("api", "https://spring.xiaoxiaoluohao.indevs.in/api/users");
return info;
}
// GET /learn - API 信息
@GetMapping("/learn")
public Map<String, Object> info() {
Map<String, Object> info = new HashMap<>();
info.put("app", appName);
info.put("message", "欢迎学习 Spring Boot");
info.put("endpoints", new String[]{
"GET /learn/params?name=xxx&age=18 - 参数示例",
"POST /learn/body - JSON 请求体示例",
"GET /learn/path/{id} - 路径变量示例",
"GET /learn/header - 请求头示例",
"GET /learn/cookie - Cookie 示例"
});
return info;
}
// GET /learn/params?name=xxx&age=18 - 查询参数
@GetMapping("/learn/params")
public Map<String, Object> params(
@RequestParam(required = false, defaultValue = "游客") String name,
@RequestParam(required = false, defaultValue = "0") Integer age
) {
Map<String, Object> result = new HashMap<>();
result.put("name", name);
result.put("age", age);
result.put("tip", "使用 @RequestParam 接收查询参数");
return result;
}
// POST /learn/body - 请求体
@PostMapping("/learn/body")
public Map<String, Object> body(@RequestBody Map<String, Object> data) {
Map<String, Object> result = new HashMap<>();
result.put("received", data);
result.put("tip", "使用 @RequestBody 接收 JSON 请求体");
return result;
}
// GET /learn/path/{id} - 路径变量
@GetMapping("/learn/path/{id}")
public Map<String, Object> path(@PathVariable String id) {
Map<String, Object> result = new HashMap<>();
result.put("id", id);
result.put("tip", "使用 @PathVariable 接收路径变量");
return result;
}
// GET /learn/header - 请求头
@GetMapping("/learn/header")
public Map<String, Object> header(@RequestHeader(value = "User-Agent", required = false) String userAgent) {
Map<String, Object> result = new HashMap<>();
result.put("userAgent", userAgent);
result.put("tip", "使用 @RequestHeader 获取请求头");
return result;
}
// GET /learn/cookie - Cookie
@GetMapping("/learn/cookie")
public Map<String, Object> cookie(@CookieValue(value = "JSESSIONID", required = false) String sessionId) {
Map<String, Object> result = new HashMap<>();
result.put("sessionId", sessionId);
result.put("tip", "使用 @CookieValue 获取 Cookie");
return result;
}
// GET /learn/exception - 异常处理
@GetMapping("/learn/exception")
public String exception() {
throw new RuntimeException("这是一个测试异常");
}
// 全局异常处理
@ExceptionHandler(RuntimeException.class)
public Map<String, Object> handleException(RuntimeException e) {
Map<String, Object> result = new HashMap<>();
result.put("error", e.getMessage());
result.put("tip", "使用 @ExceptionHandler 处理异常");
return result;
}
}