-
[HTTP] TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.서버/삽질 2023. 9. 17. 21:37반응형
StudyHub 개발 도중 제목과 같은 에러를 만났다.
사용자가 아래 화면에서 관심있는 스터디를 검색했을 때 스터디 제목을 기준으로 검색 내용과 일치하는 제목이 있을 경우 해당 스터디엔티티를 반환하는 로직을 구현하고있었다.
@GetMapping("") public ResponseEntity<?> findPostByString(FindPostRequestByString request) { return ResponseEntity.ok(studyPostService.findPostResponseByString(request)); }
Controller 에서 json 형식으로 받아온 Dto 를 넘겨줘 결과적으로 해당 스터디를 변환한 dto를 받아올 생각이었다.
하지만 스웨거에서 요청을 보낸 결과 아래 에러메시지를 뱉으며 response 자체가 오지 않았다.
TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.
컨트롤러, 필터에서 모두 로그를 찍어봤지만 아무것도 찍히지 않는것으로 보아 Http Request 에 문제가 있음을 예상했고 구글링해 찾아보았다.
결과적으로 Http Get 메소드는 Request Body를 포함하지 않는 것이 보편적이며 대부분의 웹 서버 및 프레임워크에서 요청 바디를 무시하거나 지원하지 않는다고한다.
그렇다면 Request Body에 값을 넣지 않으면서 문제를 어떻게 해결해야할지 고민하다 Post 메서드를 사용해서 조회하는것이 어떨까 생각했다
하지만 잘 생각해보면 GET 메서드는 자원을 조회하기 위한 메서드이고 POST 메서드는 자원을 생성하거나 업데이트할때 주로 사용되기 때문에 조회를 위해 GET 메서드를 사용하는것은 옳지않다고 생각. 쿼리 파라미터를 이용해 조회하는 방법을 생각했다.
결론
HTTP GET 메서드를 사용할때는 RequestBody 를 비워두고 쿼리 파라미터를 이용하자!
728x90반응형'서버 > 삽질' 카테고리의 다른 글
AWS 에서 전화 옴 (1) 2023.09.25 [AWS] elasticbeanstalk 배포 4xx error (0) 2023.08.04 AWS rds connect timed out 에러 (0) 2023.03.27 AWS 스프링부트 /gradlew test 실행 시 에러 (0) 2023.03.26