REST API로 서버를 만드는 도중에 문뜩 왜 GET에는 body를 쓰지말라고 하는지에 대해 궁금해져 찾아보았다.
web3 school - HTTP Request Methods
캐시 가능성: HTTP GET 요청은 종종 웹 브라우저에 의해 캐시된다. GET 요청을 간단하고 예측 가능하게 유지함으로써, 이러한 시스템이 캐시를 보다 쉽게 관리하고 검색할 수 있다.
안전성: GET 요청은 "안전(safe)" 및 "멱등(idempotent)"이어야 합니다. 이것은 서버에서 어떠한 데이터도 수정하지 않고 부작용이 없어야 함을 의미합니다. GET 요청에서 메시지 바디를 허용하지 않음으로써, GET 요청이 안전하고 멱등하게 유지되도록 보장합니다.
보안성: GET 요청은 종종 서버 로그, 브라우저 히스토리 및 다른 시스템에서 기록됩니다. 데이터를 URL에 유지함으로써, 이를 쉽게 볼 수 있으며, 제3자에게 잠재적으로 가로챌 수 있습니다. 반면, 메시지 바디에 데이터를 포함하는 POST 요청은 덜 가시적이며, 추가적인 보안 계층을 제공할 수 있습니다.
HTTP 명세서에서 GET 요청에서 메시지 바디를 사용하지 않는 것은 캐시 및 보안 문제를 일으킬 수 있기 때문이다.
권장하지 않을 뿐이지 너무 복잡한 조회 요청이 필요하다면 body를 사용 할 수도 있을 것 같다