최근 인터넷 표준화 기구(IETF)에서 RFC 10008을 통해 새로운 HTTP QUERY 메서드가 공식적으로 정의되었습니다. 이 메서드는 웹 개발자들이 오랫동안 겪어왔던 HTTP 요청 방식의 딜레마를 해소하기 위해 고안되었습니다. 기존 GET 메서드는 요청이 안전하고 멱등적이라는 장점이 있지만, 질의 데이터를 URI에 직접 포함해야 하여 긴 URI, URI 인코딩 비용, 그리고 로그에 민감 정보가 노출될 위험이 있었습니다. 반면 POST 메서드는 요청 본문에 데이터를 담을 수 있지만, 기본적으로 안전하거나 멱등적이지 않아 캐싱이나 자동 재시도 같은 HTTP의 유용한 기능들을 적용하기 어려웠습니다.
QUERY 메서드는 이러한 GET과 POST의 장점을 결합한 것입니다. 요청 본문에 질의를 담아 보낼 수 있으면서도, 메서드 자체가 안전하고 멱등적으로 정의되어 있습니다. 이는 서버에 상태 변화를 유발하지 않고(safe), 같은 요청을 여러 번 보내도 동일한 결과를 반환한다(idempotent)는 의미입니다. 덕분에 클라이언트는 QUERY 요청을 보낼 때 서버의 상태가 변경될 걱정 없이 데이터를 조회할 수 있으며, 네트워크 오류 발생 시에도 안전하게 요청을 재시도할 수 있습니다. 또한, QUERY 응답은 캐시될 수 있어 성능 향상에도 기여하며, 서버는 Content-Location 헤더를 통해 질의 결과 리소스의 URI를, Location 헤더를 통해 동일한 질의를 다시 수행할 수 있는 등가 리소스(equivalent resource)의 URI를 알려줄 수 있습니다.
이 새로운 QUERY 메서드의 도입은 HTTP 통신 패턴에 중요한 변화를 가져올 것으로 예상됩니다. 특히 복잡한 필터링, 검색 조건, 또는 대량의 데이터를 포함하는 질의를 처리할 때 개발자들은 더 명확하고 효율적인 방법을 갖게 됩니다. 데이터가 URI에 노출되지 않으므로 보안성이 향상되고, URI 길이 제한에 대한 걱정 없이 유연하게 질의를 구성할 수 있습니다. 이는 RESTful API 설계에도 영향을 미쳐, 조회(read) 작업의 의미를 더욱 명확히 하고 HTTP의 본래 기능을 더욱 충실히 활용할 수 있는 기반을 마련할 것입니다. 다만, QUERY 메서드는 CORS(교차 출처 리소스 공유) 환경에서 '안전한 메서드(safelisted method)'에 포함되지 않으므로, 사전 요청(preflight request)이 필요하다는 점은 개발 시 고려해야 할 부분입니다.