Controller로 들어온 여러 가지 값들!
뭔가 보냈는데.... 왜 못받지?? 또는 어떻게 받아야 하지...??
이러한 일을 줄여 봅시다!
주로 GET 요청에 사용 되며,
?key=value 형태의 파라미터를 받을 때 사용됩니다!
추가로 required, defaultValue 설정을 하여
해당 값이 필수인지와, 기본값을 설정 할 수 있습니다.
ex) 요청
GET /search?keyword=스프링&sort=latest
ex) 서버
@GetMapping("/search")
public String search(@RequestParam(required = "false") String keyword,
@RequestParam(defaultValue = "recent") String sort) {
return keyword + ", " + sort;
}
RESTful API 설계에서 자주 사용되며,
URL 경로에 포함된 동적인 값을 변수로 매핑해 줍니다
@PathVariable("경로명") 형식으로 변수명과 다르게도## 설정 가능
ex) 요청
GET /users/5
ex) 서버
@GetMapping("/users/{id}/{name}")
public String getUser(@PathVariable Long id, @PathVariable("name") String userName) {
return "조회한 사용자 ID: " + id;
}
POST, PUT, PATCH 요청에서 주로 사용되며,
요청의 Body에 포함된 JSON 데이터를 자바 객체로 변환해서 받을 수 있습니다.
JSON -> Java 객체로 자동 바인딩 하려면, 클래스의 필드와 JSON 키값을
일치시키는 매핑이 필수입니다!
ex) 요청
POST /users
Content-Type: application/json
{
"name": "gunwoo",
"email": "gunwoo@example.com"
}
ex) 서버
@PostMapping("/users")
public String createUser(@RequestBody UserDto user) {
return user.getName() + "님 가입 완료!";
}
| 어노테이션 | 주로 사용하는 HTTP 방식 | 데이터 위치 | 예시 URI |
|---|---|---|---|
@RequestParam | GET, POST(form) | Query String | /search?keyword=java |
@PathVariable | GET | URL 경로 | /users/5 |
@RequestBody | POST, PUT, PATCH | 요청 본문(JSON) | POST /users + JSON Body |
| 상황 | 추천 방식 |
|---|---|
| 검색 필터, 옵션 | @RequestParam |
| 특정 리소스 식별 (ex: userId) | @PathVariable |
| 회원가입, 글쓰기 등 구조적 데이터 | @RequestBody |
각 상황에 맞는 방법으로 데이터를 보내고 받아 봅시다!