@RequestParam vs @RequestBody [Spring]

jbong·2025년 3월 1일
0

스프링부트

목록 보기
11/15
post-thumbnail

그렇다. Post로 요청을 보내면서 403 Error가 발생하고 있는 상황이였다.
403 Error이라 함은 Security를 적용하면서 인증 권한을 설정 안했거나, 보통 요청을 차단했을 때 발생하는 오류인데, 필자는 관련 권한 설정을 전부 해줬는데도 발생한 오류였다.


결론 부터 얘기하면 다음과 같다.

결론

@RequestParam@RequestBody
데이터 위치URL 쿼리 스트링 (?reason=내용)HTTP 요청 본문 (Body)
적합한 요청 방식GET, DELETEPOST, PUT, PATCH
Spring Security 차단 가능성있음 (POST 요청 시)없음 (표준 REST 방식)

그래서 뭐가 문제였냐. 바로

@RequestParam

Post 요청을 보낼 때 데이터를 body에 담아서 보내는 것이 아닌, param 즉, query로 담아서 보내고 있었다. 이는 RESTful API 원칙에 맞지 않는 형식이며, 또한 post 요청의 표준 방식은 리소스를 생성 or 변경하는 요청이므로 데이터를 반드시 body에 담아야 한다.

@RequestBody

@RequestParam으로 요청을 보낼려면 엔드포인트에서 query 뒤에 값을 담아서 보내야 하는데, 말했듯이 post 요청은 query에 담는 것이 아닌, 반드시 body에 데이터를 담아서 보내야 한다!


profile
노력하는 개미

2개의 댓글

comment-user-thumbnail
2025년 3월 2일

혹시 개미인가요?

1개의 답글