[SpringBoot] @PathVariable 사용 시, 500 에러 발생

bada·2024년 8월 2일

Trouble Shooting

목록 보기
2/10

문제 발생

스프링부트로 REST API 실습을 진행하던 도중, 작성한 PUT메서드 코드를 테스트하기 위해 curl명령어로 확인하는 도중 다음과 같은 상황이 발생.

문제 원인

PUT메서드를 사용하여 내용을 수정하는 메서드를 테스트하고 싶었으나 status:500 에러가 발생. 서버측의 오류이니 코드를 다시 확인해 봐야 했다.


문제 해결

@PathVariable 에서 매핑할 URL의 파라미터 값과 @PathVariable 변수 이름이 일치하는 경우 생략이 가능하다. 하지만 스프링부트 3.2부터는 파라미터를 추가해주지 않으면 인식하지 못하므로 꼭 명시해주어야 한다고 한다. 아래는 문제가 발생한 코드와 수정 코드다.


문제 코드
@PathVariable 어노테이션에 변수명을 명시해주지 않았다.

@PutMapping("/posts/{id}")
public Post updatePost(@PathVariable Long id, @RequestBody PostDTO postDTO) {
    return postService.updatePost(id, postDTO);
}

수정한 코드
@PathVariable("id")와 같이 파라미터 값과 변수명이 동일해도 명시해주자.


@PutMapping("/posts/{id}")
public Post updatePost(**@PathVariable("id")** Long id, @RequestBody PostDTO postDTO) {
    return postService.updatePost(id, postDTO);
}

변수명을 명시해주니 잘 수정된 모습을 확인할 수 있다.

profile
하루 세번 목 당기기

0개의 댓글