순서
1. @RequestParam이란
2. @RequestBody란
3. @ModelAttribute란
✅ @RequestParam
- 1개의 HTTP 요청 파라미터를 받기 위해 사용
- Body를 직접 조회하지 않음
- 필수이기 때문에 반드시 해당 파라미터가 전송되어야 함
(필수 값을 해제하려면 required 속성을 false로 설정)
(기본값을 설정하려면 defaultValue 속성 사용)
@GetMapping("/test")
public String requestParam(@RequestParam("name") String name,
@RequestParam(name = "age", required = false) int age) {
....
}
✅ @RequestBody
- 클라이언트가 전송하는 Json 형태의 HTTP Body를 Java 객체로 변환하기 위해 사용
- 바인딩이 아닌 변환을 시키는 것이기 때문에 변수들의 Setter 함수가 없어도 저장됨
@PostMapping("/register")
public String register(@RequestBody Member member) {
....
}
✅ @ModelAttribute
- 클라이언트가 전송하는 form 형태의 HTTP Body와 요청 파라미터들을 특정 Java 객체에 바인딩하기 위해 사용
- 변환이 아닌 바인딩을 시키기 때문에 변수들의 Setter 함수가 없으면 저장되지 않음
- 파라미터 레벨 뿐만 아니라 메소드 레벨에도 적용 가능
- 다양한 검증(Validation) 작업 진행
@GetMapping("/register")
public String register(@ModelAttribute Member member) {
....
}
✅ 검증(Validation)
- @ModelAttribute의 바인딩 작업이 실패로 끝나는 경우 2가지
1. 기본적으로 실행되는 타입 변환에 실패함
2. 검증기(validator)를 통과하지 못 함 (=> 검증기는 사용자가 직접 정의하는 부분)
- Form의 submit을 처리하는 컨트롤러 메소드에서 검증기를 이용한 검증 작업은 필수
- 위와 같은 경우 사용되는 API
Validator, BindingResult, Errors
➤ Errors
- 오류 저장과 조회 기능을 제공하는 인터페이스
➤ BindingResult
- Errors 인터페이스를 상속받아, 검증 오류를 보관하고 조회하는데 더해 추가적인 메소드를 제공해주는 인터페이스
- @ModelAttribute 바로 다음 파라미터로 선언해서 오류 발생 시 사용
@GetMapping("/register")
public String register(@ModelAttribute Member member, BindingResult result) {
....
}
'개발 공부' 카테고리의 다른 글
[예외 처리 방법] feat. 에러 (0) | 2023.08.28 |
---|---|
[@Autowired vs @RequiredArgsConstructor] feat. 의존성 주입 (0) | 2023.08.22 |
[@RequestMapping] feat. HTTP 메소드 (0) | 2023.08.17 |
[SVN vs Git] feat. 형상 관리 툴 (0) | 2023.08.03 |
[기본 타입, 래퍼 클래스] feat. 박싱, 언박싱 (0) | 2023.06.20 |