✅ 요청 매핑 어노테이션 (@RequestMapping, @GetMapping 등)

어노테이션 설명 요청 방식
@RequestMapping 모든 HTTP 요청 처리 가능 (GET, POST 등) 전부 가능
@GetMapping 데이터 조회 GET
@PostMapping 데이터 생성/등록 POST
@PutMapping 데이터 수정 PUT
@DeleteMapping 데이터 삭제 DELETE

예시:

@GetMapping("/members")
public String getMembers() {
    return "조회 완료";
}

@PostMapping("/members")
public String createMember(@RequestBody MemberDto dto) {
    return "등록 완료";
}

✅ 요청 파라미터 바인딩 어노테이션

어노테이션 설명 예시 URL
@PathVariable URL 경로에 있는 값 추출 /member/10
@RequestParam 쿼리 스트링 또는 폼 파라미터 /member?id=10
@RequestBody JSON 본문 전체를 객체로 바인딩 (POST/PUT 요청 JSON)

예시:

🔹 @PathVariable

@GetMapping("/member/{id}")
public String getMember(@PathVariable Long id) {
    return "ID: " + id;
}

🔹 @RequestParam

@GetMapping("/search")
public String search(@RequestParam String keyword) {
    return "검색어: " + keyword;
}

🔹 @RequestBody

@PostMapping("/product")
public String saveProduct(@RequestBody ProductDto dto) {
    return "상품명: " + dto.getName();
}

🧠 언제 어떤 걸 써야 할까?

상황 사용 어노테이션
URL 안에 값이 포함됨 (/user/123) @PathVariable
주소 뒤에 ?key=value 로 값 전달 @RequestParam
JSON으로 전체 객체 전송 @RequestBody

💬 혼합 사용 예시

@PostMapping("/product/{id}")
public String update(
    @PathVariable Long id,
    @RequestParam String token,
    @RequestBody ProductDto dto
) {
    return "ID=" + id + ", token=" + token + ", name=" + dto.getName();
}