스프링

트러블 슈팅

148june 2025. 3. 25. 15:33

문제 발생

Spring을 사용하여 API를 개발하는 중, 클라이언트에서 JSON 형식의 데이터를 보내는 PATCH 요청을 처리할 때 @RequestParam을 사용하여 파라미터를 처리하려 했고, 요청 본문에서 JSON 데이터를 제대로 매핑하지 못하는 오류가 발생했습니다. 또한, @GetMapping과 @PatchMapping을 헷갈려서 잘못된 HTTP 메서드로 요청을 처리하려 했던 점도 문제였습니다.

문제 분석

  • @RequestParam은 쿼리 파라미터나 폼 데이터에서 값을 추출하는 데 사용되며, JSON 데이터를 처리하려면 @RequestBody를 사용해야 합니다.
  • @GetMapping과 @PatchMapping을 헷갈린 점도 문제였습니다. PATCH 요청을 처리하려면 @PatchMapping을 사용해야 합니다.
  • @RequestParam을 사용하면 요청 본문을 읽지 못해 매핑 오류가 발생합니다.

해결 방법

  1. @RequestParam 대신 @RequestBody 사용
    JSON 형식의 데이터를 요청 본문에서 Java 객체로 매핑하려면 @RequestBody를 사용해야 합니다. @RequestBody는 HTTP 요청 본문을 자동으로 파싱하여 지정한 객체로 매핑합니다.
  2. 적절한 HTTP 메서드 사용
    PATCH 요청을 처리하려면 @PatchMapping을 사용해야 합니다. @PostMapping은 새로운 리소스를 생성하는 데 사용되므로, 수정 작업을 처리하는 PATCH 요청에는 적합하지 않습니다.
  3. @RequestParam은 쿼리 파라미터나 폼 데이터에서만 사용
    @RequestParam은 URL의 쿼리 파라미터나 폼 데이터에서 값을 추출할 때만 사용해야 하며, 요청 본문에서 JSON 데이터를 받아 처리할 때는 @RequestBody를 사용해야 합니다.

결론

  • JSON 형식의 데이터를 처리하려면 @RequestBody를 사용해야 하며, @RequestParam은 쿼리 파라미터나 폼 데이터를 처리할 때만 적합합니다.
  • PATCH 요청을 처리하려면 @PatchMapping을 사용해야 하며, POST와 혼동하지 않도록 주의해야 합니다.
  • API 설계 시, 요청 본문에서 데이터를 받아 처리할 때는 @RequestBody를 사용하는 것이 중요합니다.

'스프링' 카테고리의 다른 글

예외처리  (0) 2025.04.03
SOLID 원칙  (0) 2025.03.26
스케쥴 스프링으로 만들기  (0) 2025.03.25
스프링 부트 설정  (0) 2025.03.20
@Component  (0) 2025.03.18