典型用法
基本用法:返回 JSON 數據
@GetMapping("/users/{id}")
@ResponseBody
public User getUser(@PathVariable Long id) {return userService.findById(id);
}
Spring 自動使用 Jackson(或其他 HttpMessageConverter)將 User 對象序列化為 JSON。
響應頭 Content-Type 默認為 application/json。
結合 @Controller 使用(等價于 @RestController)
@RestController = @Controller + 所有方法默認加 @ResponseBody
@Controller
public class UserController {@GetMapping("/users")@ResponseBodypublic List<User> getAllUsers() {return userService.findAll();}
}等價于使用
@RestController
public class UserController {@GetMapping("/users")public List<User> getAllUsers() {return userService.findAll();}
}
返回統一響應結構(推薦做法)
實際項目中通常會封裝統一的響應格式,如:
public class ApiResponse<T> {private int code;private String message;private T data;// 構造器、getter/setter
}@GetMapping("/users/{id}")
@ResponseBody
public ApiResponse<User> getUser(@PathVariable Long id) {User user = userService.findById(id);return ApiResponse.success(user);
}// 響應示例(JSON):
{"code": 200,"message": "OK","data": {"id": 1,"name": "Alice"}
}
支持 XML 輸出(需配置 Jackson XML 模塊)
如果客戶端請求頭指定 Accept: application/xml,Spring 可以自動返回 XML 格式:
@GetMapping(value = "/users", produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public List<User> getAllUsersInXml() {return userService.findAll();
}// 響應示例(XML):
<user><id>1</id><name>Alice</name>
</user>
返回字符串原始內容(不序列化)
如果你希望直接返回字符串內容而不是 JSON,可以這樣做:
@GetMapping("/hello")
@ResponseBody
public String sayHello() {return "Hello, World!";
}
結合 ResponseEntity 使用(更靈活控制響應)
雖然 @ResponseBody 很方便,但如果你需要控制狀態碼或響應頭,建議使用 ResponseEntity:
@GetMapping("/users")
public ResponseEntity<List<User>> getAllUsers() {List<User> users = userService.findAll();return ResponseEntity.ok().header("X-Custom-Header", "value").body(users);
}