Como se indica en http://www.boutell.com/newfaq/misc/urllength.html , la cadena de consulta HTTP tiene una longitud limitada. Puede estar limitado por el cliente (Firefox, IE, ...), el servidor (Apache, IIS, ...) o el equipo de red (firewall aplicativo, ...).
Hoy me enfrento a este problema con un formulario de búsqueda. Desarrollamos un formulario de búsqueda con muchos campos, y este formulario se envía al servidor como una solicitud GET, por lo que puedo marcar la página resultante.
Tenemos tantos campos que nuestra cadena de consulta tiene una longitud de 1100 bytes y tenemos un firewall que elimina las solicitudes HTTP GET con más de 1024 bytes. Nuestro administrador de sistema nos recomienda utilizar POST en su lugar para que no haya limitaciones.
Claro, POST funcionará, pero realmente siento una búsqueda como GET y no como POST. Así que creo que revisaré nuestros nombres de campo para asegurarme de que la cadena de consulta no sea demasiado larga y, si no puedo, seré pragmático y usaré POST.
Pero, ¿hay alguna falla en el diseño de los servicios RESTful? Si tenemos una longitud limitada en la solicitud GET, ¿cómo puedo enviar objetos grandes a un servicio web RESTful? Por ejemplo, si tengo un programa que hace que los cálculos basados en un archivo, y quiero ofrecer un servicio web REST como esto: http://compute.com?content=<base64 file>
. Esto no funcionará porque la cadena de consulta no tiene una longitud ilimitada.
Estoy un poco perplejo ...