HTTPQUERY
Español

El método HTTP QUERY

QUERY es un método HTTP propuesto que cubre un hueco real: es seguro e idempotente como GET, pero puede transportar un cuerpo de solicitud como POST. Piense en él como «un GET al que se le puede enviar una carga útil».

Por qué existe

Las consultas complejas han impuesto durante mucho tiempo una elección incómoda:

  • GET con cadena de consulta: mete todos los filtros en la URL. Las URL tienen límites de longitud, se registran en texto plano y resultan torpes para criterios estructurados o anidados.
  • POST con cuerpo: transporta la carga útil sin problema, pero miente sobre la intención. POST no es seguro ni idempotente, así que las cachés, los rastreadores y los intermediarios deben suponer que la solicitud cambia el estado. Y no lo hace: solo se está leyendo.

QUERY resuelve la tensión: la semántica dice «esto es una lectura» y el cuerpo transporta los criterios.

Propiedades

PropiedadQUERYGETPOST
Seguro✓✓✗
Idempotente✓✓✗
Cuerpo de la solicitud✓✗✓
Almacenable en caché✓✓condicional

Cómo es una solicitud

QUERY /products HTTP/1.1
Host: shop.example
Content-Type: application/json
Accept: application/json

{ "category": "boots", "inStock": true }

Almacenamiento en caché con Content-Location

Como QUERY es seguro e idempotente, una respuesta se puede almacenar en caché, pero la clave de caché no puede ser solo la URL, ya que el cuerpo varía. El servidor indica la ubicación canónica del resultado con una cabecera Content-Location:

HTTP/1.1 200 OK
Content-Location: /products?category=boots&inStock=true
Cache-Control: max-age=60

Una caché (o el cliente) puede entonces reutilizar esa representación para una solicitud equivalente. Este es el mecanismo que permite que una lectura con cuerpo siga siendo almacenable en caché.

Pruébelo

Vaya al Área de pruebas y envíe una solicitud QUERY real al punto de eco de este sitio para ver exactamente cómo llegan al servidor el método, las cabeceras y el cuerpo.

QUERY está definido en un Internet-Draft del IETF y sigue evolucionando. Tome los detalles anteriores como un resumen de trabajo y consulte el borrador enlazado para conocer el texto autorizado y actual.