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 root() { Map 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 info() { Map 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 params( @RequestParam(required = false, defaultValue = "游客") String name, @RequestParam(required = false, defaultValue = "0") Integer age ) { Map 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 body(@RequestBody Map data) { Map result = new HashMap<>(); result.put("received", data); result.put("tip", "使用 @RequestBody 接收 JSON 请求体"); return result; } // GET /learn/path/{id} - 路径变量 @GetMapping("/learn/path/{id}") public Map path(@PathVariable String id) { Map result = new HashMap<>(); result.put("id", id); result.put("tip", "使用 @PathVariable 接收路径变量"); return result; } // GET /learn/header - 请求头 @GetMapping("/learn/header") public Map header(@RequestHeader(value = "User-Agent", required = false) String userAgent) { Map result = new HashMap<>(); result.put("userAgent", userAgent); result.put("tip", "使用 @RequestHeader 获取请求头"); return result; } // GET /learn/cookie - Cookie @GetMapping("/learn/cookie") public Map cookie(@CookieValue(value = "JSESSIONID", required = false) String sessionId) { Map 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 handleException(RuntimeException e) { Map result = new HashMap<>(); result.put("error", e.getMessage()); result.put("tip", "使用 @ExceptionHandler 处理异常"); return result; } }