org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter '~~' is not present 오류 해결
상황
api를 호출하면서 에러가 발생했다.
@DeleteMapping(value = "/viewCategoryTemplate/{categoryNo}")
public ApiResponseWrapper deleteTeam(@RequestParam(value = "teamNo") Long teamNo) {
return teamService.deleteTeam(teamNo);
}
똑같은 형태면서 POST로 호출하는 것은 잘 되었으나, DELETE로 호출하는 것은 에러가 났다.
인터넷을 찾아보니 넘겨줘야 하는 파라미터를 넘기지 않아서 이 파라미터를 찾을 수 없기 때문에 에러가 난다는 말이 있었다.
개발자 도구 네트워크 탭에서 api 호출하는 걸 보니 파라미터를 잘 넘겨주고 있었다...
해결
잘 동작하는 코드와 다른 점은 메소드 밖에 없었어서 이와 관련해서 찾아보니
버전이 낮은 Spring에서는 delete 메소드에 body를 세팅할 수 없다는 것을 알게 되었다.
4.2.x 버전 Spring부터는 delete 메소드에 body를 세팅할 수 있다!
@DeleteMapping(value = "/viewCategoryTemplate/{categoryNo}")
public ApiResponseWrapper deleteTeam(@PathVariable(value = "teamNo") Long teamNo) {
return teamService.deleteTeam(teamNo);
}
버전을 바꿀 수는 없는 상황이라서 @RequestBody로 받던 것을 @PathVariable로 받아서 해결했다.
참고
'Spring' 카테고리의 다른 글
IntelliJ Cannot find symbol 에러, dependencies 빨간 줄 해결 (1) | 2023.10.27 |
---|---|
Spring의 싱글톤 빈이 무상태여야 하는 이유 (0) | 2023.10.18 |
@RequestParam 사용법과 생략 (0) | 2023.09.14 |
org.apache.ibatis.executor.ExecutorException : No constructor found in ~ 에러 해결 (0) | 2023.09.04 |
assertThat() import가 안 될 때 해결 (0) | 2023.08.19 |