서론
현재 회사에서는 Spring - java - mybatis / JSP - jQuery를 사용하고 있는데,
회사 팀 내에서 JPA와 React를 도입하자는 의견들이 있어 자체적으로 프론트 개발자분들 두 분과 나와 백엔드 개발자 한분 이렇게 넷이서 팀을 꾸려 당장 서비스엔 도입이 힘드니, 회사 공식 홈페이지를 개발해보기로 했다.
회의를 통해 공통 응답과 몇 안되는 API 리스트업을 하여 작업 후 우선 개발 서버에 배포를 하였는데,
프론트 개발자분께서 지속적으로 에러가 발생하는 부분에 대해 피드백을 주셔서 확인을 해보았다.
본론
에러를 확인해보니 400 에러가 떨어지는데 @RequestBody를 통해 받는 객체에 매핑이 안되는 내용이였다.
분명 PostMan에서는 정상적으로 API가 작동하는것을 확인 했는데 React에서 Fetch 나 Axios를 통해 호출하면 400 에러가 떨어졌다.
확인해보니, jquery의 Ajax처럼 React의 Fetch나 Axios , Spring 템플릿 ( Thymeleaf ) 에서 모두 Get 메서드에는 Body를
지원하지 않는다는 것이였다.
HTTP GET method with payload body (leedo.me)
위 블로그 글을 보면 HTTP 규약에서 get 메서드에 body를 허용한 시점이 2014년도이기 때문에, 일부 클라이언트들이 지원하지 않을 수 있다는 내용이 있다.
그동안 프론트엔드 개발자분들과 협업을 많이 진행해보지 않았기 때문에, PostMan으로만 테스트를 했던 나로써는 Get 메서드에 Body가 당연히 된다고 생각을 하고 작업을 했었다.
결론
Get 메서드를 사용 할 때 데이터를 전달하고 싶은 경우 HTTP 규약상 문제가 없지만, 일부 클라이언트들이 지원하지 않을 수 있기 때문에 웬만하면 Body를 사용하지 말고, Query String 혹은 Path Variable을 사용하도록 하자!
'💻Spring' 카테고리의 다른 글
Spring WebClient를 이용한 Open API 통신 (0) | 2023.12.11 |
---|---|
Spring Boot에서 Batch, Scheduler 사용기 (0) | 2023.12.08 |
Spring Security 사용자 권한에 따른 API 접근 설정하기 (0) | 2023.09.14 |
Spring Security 401,403 Custom Response 적용하기 (0) | 2023.08.24 |
MySQL , JPA 에서의 Batch Insert 적용기 (0) | 2023.08.08 |