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
'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 |