Skip to content

HTTP QUERY: 우리가 20년 동안 기다려온 API 해결책

QUERY라는 새로운 HTTP 메서드가 복잡한 검색을 처리하는 잘못된 방식을 고치기 위해 등장했습니다. 이는 읽기 전용 API에 POST를 오용하는 관행을 마침내 종식시킵니다.

Theo Brandt
Hero image for: HTTP QUERY: 우리가 20년 동안 기다려온 API 해결책

요약 / 핵심 포인트

QUERY라는 새로운 HTTP 메서드가 복잡한 검색을 처리하는 잘못된 방식을 고치기 위해 등장했습니다. 이는 읽기 전용 API에 POST를 오용하는 관행을 마침내 종식시킵니다.

우리 모두가 저지른 의미론적 죄악

수십 년 동안 데이터를 검색하는 것은 종종 검색 매개변수를 GET 요청의 URL 쿼리 문자열에 직접 인코딩하는 것을 의미했습니다. 이러한 접근 방식은 관계형 쿼리 또는 깊게 중첩된 데이터를 포함하는 복잡한 검색에서 빠르게 한계를 드러냈습니다. URL은 길어져 브라우저 또는 서버 길이 제한에 자주 도달했으며, 모든 매개변수를 서버 로그와 브라우저 기록에 명확하게 노출시켰습니다.

URL 제약을 우회하기 위해 개발자들은 해결책을 채택했습니다. 즉, 복잡한 검색 필터를 요청 본문 내에 담기 위해 POST 요청을 사용하는 것이었습니다. 그러나 이는 심각한 의미론적 위반을 초래했습니다. `POST`는 근본적으로 새로운 리소스를 생성하기 위해 설계되었으며, 기존 데이터를 안전하고 멱등적으로 검색하기 위한 것이 아닙니다.

검색에 `POST`를 오용하는 것은 실질적인 결과를 초래했습니다. 이는 캐싱 메커니즘을 망가뜨렸는데, 프록시는 `POST` 응답이 비멱등적 특성 때문에 거의 캐시하지 않기 때문입니다. 더욱이, 그 비멱등적 특성은 클라이언트가 네트워크 오류 시 안전하게 자동 재시도를 수행하는 것을 방해했는데, 이는 진정한 읽기 전용 작업의 기본적인 기능입니다.

덜 일반적이지만, 마찬가지로 문제가 되는 시도는 `GET` 메서드와 함께 요청 본문을 보내는 것이었습니다. HTTP/1.1 사양은 이를 모호하게 허용했지만, 그러한 본문은 "정의된 의미가 없으며" "무시되어야 한다"고 명시적으로 언급했습니다. 이는 "본문이 있는 GET"을 신뢰할 수 없고 표준화되지 않은 신화로 만들었으며, 웹 인프라 전반에서 일관된 지원을 얻지 못했습니다.

QUERY: GET의 안전성, POST의 강력함

마침내 HTTP QUERY 메서드(RFC 10008)가 2026년 6월에 공식적으로 표준화되어 등장했습니다. 이는 개발자들이 20년 이상 사용해 온 의미론적 해결책을 다루기 위해 특별히 제작된 "검색을 위한 누락된 메서드"를 나타냅니다. 이 새로운 동사는 복잡한 읽기 전용 데이터 검색을 특별히 목표로 합니다.

QUERY는 선행 메서드들의 최고의 속성들을 우아하게 결합합니다. GET과 마찬가지로, 이는 안전하고 멱등적입니다. 즉, 서버 상태를 변경하지 않으며 동일한 요청은 항상 같은 결과를 반환합니다. 이러한 속성은 실패 시 강력한 클라이언트 재시도를 가능하게 합니다. 결정적으로, POST와 마찬가지로 요청 본문을 허용하여 쿼리 매개변수를 위한 충분한 공간을 제공합니다.

이 하이브리드 설계는 풍부한 데이터 검색의 핵심 문제를 직접적으로 해결합니다. 개발자들은 이제 요청 본문 내에 JSON 페이로드와 같은 복잡하고 깊게 중첩된 쿼리 구조를 보낼 수 있습니다. 이는 브라우저 또는 서버 URL 길이 제한에 도달하는 것을 피하고 로그에 민감한 매개변수가 노출되는 것을 방지합니다. 결정적으로, 이는 상태를 변경하지 않는 작업에 POST를 사용하는 의미론적 위반을 제거하여, 마침내 고급 API 검색을 위한 표준화되고 캐시 가능하며 의미론적으로 올바른 접근 방식을 제공합니다.

더 스마트한 캐싱, 더 나은 보안

`QUERY`는 의미론적 정확성 외에도 특히 캐싱 및 보안 측면에서 상당한 운영상의 이점을 제공합니다. 그 설계는 복잡한 데이터 검색 시나리오에서 `GET`과 `POST`를 괴롭혔던 오랜 문제들을 해결합니다.

`QUERY` 메서드에 의해 생성된 응답은 `GET`의 효율성을 반영하여 완전히 캐시 가능합니다. 결정적으로, 전체 요청 본문이 캐시 키에 직접적으로 반영됩니다. 이 정교한 메커니즘은 URI와 관계없이 각 고유한 쿼리 본문이 고유한 캐시 항목을 생성하도록 보장하여, 정확하고 효율적인 데이터 검색을 용이하게 합니다.

내장된 탐색 메커니즘은 `QUERY`의 유용성을 더욱 향상시킵니다: 바로 `Accept-Query` 헤더입니다. 이제 서버는 지원하는 특정 쿼리 형식을 명시적으로 광고하여 클라이언트-서버 통신을 간소화하고 API 검색 가능성을 개선할 수 있습니다. 클라이언트는 예상되는 구문에 대한 명확성을 얻어 통합 마찰을 줄일 수 있습니다.

보안 및 개인 정보 보호 또한 현저히 개선되었습니다. `QUERY`는 CORS-safelisted method아니므로, 교차 출처 호출에 대해 사전 요청 `OPTIONS`를 필요로 하여 웹 애플리케이션 보안을 강화합니다. 더 중요한 것은 민감한 쿼리 매개변수를 URL에서 제외하여 서버 로그, 프록시 기록 및 브라우저 기록에 노출되는 것을 방지함으로써 `GET`에 비해 상당한 개인 정보 보호 이점을 제공한다는 것입니다.

이러한 신중한 설계는 `QUERY`를 최신 API 요구 사항을 위한 강력한 솔루션으로 만듭니다. 더 깊은 기술 사양은 RFC 10008: The HTTP QUERY Method를 참조하십시오. 이 문서는 `QUERY`의 모든 기능과 웹 아키텍처에 대한 영향을 자세히 설명합니다.

Enjoying this? Get one like it in your inbox each morning.

one email a day · unsubscribe in two clicks · no third-party tracking

채택의 길: 현실 점검

`QUERY` (RFC 10008)는 이제 공식적으로 표준화되어 HTTP 의미론에 있어 중요한 진전을 이루었습니다. 이러한 기본적인 성과에도 불구하고, 전체 웹 생태계 전반의 광범위한 채택은 아직 초기 단계에 머물러 있습니다. 브라우저, 다양한 웹 프레임워크 및 네트워크 프록시는 이 새로운 메서드에 대한 지원을 점진적으로 확대하고 있으며, 이는 근본적인 프로토콜 변경에 시간이 걸리는 과정입니다.

주요 업체들이 이미 `QUERY`를 플랫폼에 통합하면서 분명히 추진력이 붙고 있습니다. OpenAPI 3.2는 이제 `QUERY` 메서드를 공식적으로 지원하여 아키텍트와 개발자가 API 사양 내에서 이러한 강력한 새 엔드포인트를 직접 정의할 수 있도록 합니다. Microsoft의 .NET 10 프레임워크 또한 초기 단계의 강력한 지원을 제공하며, 이는 더 광범위한 프레임워크 통합에 대한 강력한 신호이자 초기 실험을 장려합니다.

조직은 `QUERY`의 궁극적인 보편성을 전략적으로 계획해야 합니다. 새롭고 복잡한 읽기 전용 엔드포인트의 경우 처음부터 `QUERY`로 설계하되, 호환성을 위해 `POST` 또는 `GET`으로의 강력한 대체 기능을 구현하십시오. 마지막으로, 기존 웹 애플리케이션 방화벽 (WAFs) 및 프록시 구성을 업데이트할 준비를 하십시오. 이러한 시스템은 원활한 작동을 위해 `QUERY` 요청을 올바르게 해석하고 라우팅하며 캐시하는 방법을 배워야 합니다.

자주 묻는 질문

새로운 HTTP QUERY 메서드란 무엇입니까?

복잡한 검색 및 데이터 검색을 위해 설계된 새로운 표준화된 HTTP 동사 (RFC 10008)입니다. `GET` 요청의 안전성과 캐시 가능성을 `POST` 요청처럼 요청 본문을 전달하는 기능과 결합합니다.

요청 본문과 함께 `GET`을 사용하면 안 되는 이유는 무엇입니까?

본문이 있는 `GET` 요청의 동작은 HTTP 사양에 정의되어 있지 않습니다. 이로 인해 서버, 프록시 및 캐시에서 일관되지 않고 신뢰할 수 없는 처리가 발생하여 실용적이지 않은 솔루션이 됩니다.

`QUERY` 메서드는 프로덕션 사용에 준비되었습니까?

대부분의 애플리케이션에서는 아직 아닙니다. 공식적으로 표준화되었지만, 브라우저, 서버 프레임워크, 프록시 및 WAFs와 같은 인프라 전반의 광범위한 지원은 아직 초기 단계에 있습니다.

검색을 위해 `POST`를 사용하는 것보다 `QUERY`가 캐싱을 어떻게 개선합니까?

`POST` 응답은 일반적으로 프록시나 CDNs와 같은 중개자에 의해 캐시되지 않습니다. `QUERY` 응답은 요청 본문의 내용이 캐시 키의 일부로 사용되어 캐시 가능하도록 명시적으로 설계되었으며, 이는 성능을 크게 향상시킵니다.

Found this useful? Share it.

AI Reputation Report

What AI knows about you.

ChatGPT, Perplexity, Gemini, Claude & Grok are already answering questions in your category. Type your site, see who they name — you, or your competitor. Free preview.

Check my sitefree preview

One short daily email of tools worth shipping. No drip funnel.

one email a day · unsubscribe in two clicks · no third-party tracking

🚀더 알아보기

AI 트렌드를 앞서가세요

Stork.AIが엄선한 최고의 AI 도구, 에이전트, MCP 서버를 만나보세요.

P.S. 쓸 만한 걸 만드셨나요? Stork에 등록