1. @RequestParam

- required를 생략할 경우 true가 기본값으로 설정된다.

@RestController
@RequestMapping("/api")
public class UserController {
	@GetMapping("/user")
	public String getUser(@RequestParam(value="id", required=false, defaultValue="0") long id) {
		UserService.getUserById(id);
		return "ok";
	}
}

 

1.1 @RequestParam : Map을 통해 모든 파라미터 받기

- 명확하게 어떤 파라미터를 전달받는지 확인하기 어렵다는 단점이 존재한다.

@RestController
@RequestMapping("/api")
public class UserController {
	@GetMapping("/user")
	public String getUsers(@RequestParam Map<String, String> map) {
		UserService.getUsersByMap(map);
		return "ok";
	}
}

 

2. @PathVariable

@RestController
@RequestMapping("/api")
public class UserController {
	@GetMapping("/user/{id}")
	public String getUser(@PathVariable(value="id") long id) {
		UserService.getUserById(id);
		return "ok";
	}
}

 

3. @ModelAttribute

- multipart/form-data 형태의 HTTP Body 내용과 HTTP 파라미터들을 setter 메서드를 통해 1:1로 객체에 바인딩하기 위해 사용한다.

- 매핑시키는 파라미터의 타입이 객체의 타입과 일치하는지를 포함한 다양한 Validation 작업을 진행한다.

- 변환이 아닌 바인딩을 시키므로, 변수들의 setter 메서드가 반드시 필요하다.

@RestController
@RequestMapping("/api")
public class UserController {
	@GetMapping("/user")
	public String getUser(@ModelAttribute User user) {
		UserService.getUserByObject(user);
		return "ok";
	}
}

 

참고

- https://takeknowledge.tistory.com/39

- https://willbesoon.tistory.com/102

- https://parkadd.tistory.com/70

- https://mangkyu.tistory.com/72

- https://bamdule.tistory.com/131

'Spring' 카테고리의 다른 글

Static resources, View templates  (0) 2021.11.16
@RequestBody, @ResponseBody  (0) 2021.11.16
Controller method parameter types  (0) 2021.11.12
@Controller, @RestController 차이점  (0) 2021.11.12
@RequestMapping  (0) 2021.11.12