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:
GETcon 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.POSTcon cuerpo: transporta la carga útil sin problema, pero miente sobre la intención.POSTno 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
| Propiedad | QUERY | GET | POST |
|---|---|---|---|
| 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.