🔍 GET 요청에 Body 붙여도 될까?
- 한 줄 요약: GET에 body는 사실상 불가입니다. 쿼리스트링 또는 POST를 쓰세요.
✅ 왜 안 되나요?
- RFC 표준: GET의 본문은 의미가 정의되지 않았어요. 즉, 써도 “어떻게 해석할지”가 표준에 없음.
- 브라우저·프록시·CDN: 대부분 무시하거나 잘라냅니다.
- 라이브러리(fetch/axios/ky): GET body를 지원하지 않거나 무시해요.
📚 근거 레퍼런스
- RFC 9110 §9.3.1 GET: “A payload within a GET request has no defined semantics.”
- WHATWG Fetch Standard: GET/HEAD는 body 금지
- MDN: GET/HEAD는 body를 가질 수 없음
- ky: GET은
searchParams만 사용
🧭 그러면 어떻게 보내요?
1) 파라미터가 간단해요 → 쿼리스트링
import ky from "ky";
await ky.get("/search", {
searchParams: { q: "camp", page: 1, size: 20 },
}).json();
2) 조건이 길고 복잡해요 → POST + JSON
await ky.post("/search", {
json: {
q: "camp",
filters: { region: ["강릉","양양"], spec: ["전기","반려동물"] },
sort: "popular",
page: 1, size: 20,
},
}).json();
- 캐싱이 걱정되면?
- 서버: Cache-Control/ETag로 POST도 캐싱 가능
- 클라이언트: React Query queryKey에 body 요약을 포함해 캐싱 키 관리
🧪 Postman에서는 되는데요?