Spring 요청값 바인딩 요약 (@PathVariable / @ModelAttribute / @RequestBody)

김동건·2026년 2월 25일

1) @PathVariable (URL 경로)

  • 언제 쓰나: 특정 “대상(리소스)”을 명확히 식별해야 할 때 (1건 조회/수정/삭제)
  • 이유: URL 자체가 “무슨 대상을 다루는지”를 표현 → 로그/권한/캐시/디버깅이 명확
  • 예시
    • GET /api/building/qr/setting/1 → 1번 조회
    • DELETE /api/building/qr/setting/1 → 1번 삭제
    • PATCH /api/building/qr/setting/1 → 1번 수정

2) @ModelAttribute (쿼리스트링/폼 필드 → 객체 바인딩)

  • 언제 쓰나: 목록 조회에서 검색/필터/정렬/페이징 조건을 여러 개 받을 때
  • 이유: 조건이 많고 optional이 많아 DTO로 묶기 편함 + URL로 재현/공유/디버깅 쉬움
  • 예시
    • GET /api/building/qr/setting?buildingSeq=626&searchText=3층&page=1
  • 참고: 단일 파라미터는 @RequestParam을 많이 씀

3) @RequestBody (요청 Body: JSON 등)

  • 언제 쓰나: 생성/수정처럼 “저장할 데이터(payload)”를 통째로 보낼 때
  • 이유: 필드가 많거나 구조가 복잡한 데이터를 URL로 보내기 어렵고, 검증(@Valid)도 쉬움
  • 예시
    • POST /api/building/qr/setting
      • Body: { "buildingSeq": 626, "placeName": "3층 복도" }
    • PATCH /api/building/qr/setting/1
      • PathVariable로 대상(1번) + Body로 변경값 전달

한 줄 정리

  • PathVariable = “어떤 대상인가(ID)”
  • ModelAttribute = “조회 조건(필터/페이지/정렬)”
  • RequestBody = “저장/변경할 내용(payload)”
profile
백엔드를 공부하고 있는 초보 개발자입니다.

0개의 댓글