CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)의 약자로, 저장된 데이터를 처리하는 기본적인 작업이다.

| 메서드 | 목적 | Request Body 사용 | 주요 애너테이션 |
|---|---|---|---|
| GET | 리소스 조회 | ❌ (쿼리 or 경로) | @RequestParam, @PathVariable |
| POST | 리소스 생성 | ⭕ (JSON) | @RequestBody |
| PUT | 리소스 전체 수정 | ⭕ (JSON) | @RequestBody |
| DELETE | 리소스 삭제 | ❌ (보통 경로) | @PathVariable |
| 전달 방식 | 예시 | 사용 애너테이션 | DTO 사용 시 |
|---|---|---|---|
| 쿼리 파라미터 | GET /user?name=dohoon | @RequestParam 또는 생략 | DTO 필드와 이름이 일치하면 자동 매핑 |
| 경로 변수 | GET /user/1 | @PathVariable | @PathVariable Long id 등 명시 필요 |
| 요청 바디(JSON) | POST /user + JSON Body | @RequestBody | JSON → DTO로 역직렬화됨 (@RequestBody DTO) |
@RequestBody 필요 여부| 요청 방식 | DTO 사용 | @RequestBody 필요 여부 | 설명 |
|---|---|---|---|
| GET | 가능 | ❌ | 쿼리 파라미터로 자동 매핑됨 |
| POST/PUT | 가능 | ⭕ | JSON Body → DTO로 역직렬화 필요 |
| DELETE | 가능 | ❌ (보통 안 씀) | 대부분 경로 변수로 리소스 식별자만 받음 |
@RestController = @Controller + @ResponseBody
→ 메서드 리턴값이 View가 아닌 HTTP Response Body로 반환됨
@RequestBody: 요청 Body(JSON 등)를 DTO로 변환해줌
@PathVariable: URI 경로에 있는 값을 파라미터로 받음
@RequestParam: 쿼리 파라미터를 개별 파라미터로 받음
GET/DELETE는 Body를 안 쓰는 것이 REST 관례
/user/{id})로 전달 @RequestBody로 처리 ResponseEntity 사용 권장