¿La recomendación HATEOAS (hipermedio como motor de la aplicación) implica que las cadenas de consulta no son RESTful?¿HATEOAS implica que las cadenas de consulta no son RESTful?
Editar: Se sugirió a continuación que las cadenas de consulta pueden no tener mucho que ver con el estado y que, por lo tanto, la pregunta es desconcertante. Sugeriría que no tiene sentido que el URI tenga una cadena de consulta a menos que el cliente esté completando argumentos. Si el cliente está llenando argumentos, está adulterando el URI proporcionado por el servidor y me pregunto si esto viola el principio REST.
Editar 2: me doy cuenta de que la cadena de consulta parece inofensiva si el cliente la trata como opaca (y la cadena de consulta puede ser un legado y por lo tanto conveniente). Sin embargo, en una de las respuestas a continuación, Roy Fielding es citado diciendo que el URI debe tomarse como transparente. Si es transparente, entonces creo que se fomenta la adulteración y eso parece diluir el principio HATEOAS. ¿Esa dilución sigue siendo coherente con HATEOAS? Esto plantea la pregunta de si REST está pidiendo el estrecho acoplamiento que parece ser la construcción de URI.
Actualización En este tutorial de REST http://rest.elkstein.org/ se sugiere que la construcción de URI tenga un diseño incorrecto y no sea RESTful. También itera lo que dijo @zoul en la respuesta aceptada.
Por ejemplo, una solicitud de "lista de productos" podría devolver una identificación por producto, y la especificación dice que debe usar http://www.acme.com/product/PRODUCT_ID para obtener detalles adicionales. Eso es un mal diseño. Por el contrario, la respuesta debe incluir la URL real con cada elemento: http://www.acme.com/product/001263, etc. Sí, esto significa que la salida es más grande. Pero también significa que puede dirigir fácilmente a los clientes a nuevas URL según sea necesario
Si un humano está mirando esta lista y no quiere lo que puede ver, puede haber "10 elementos anteriores" y sin embargo, si no hay un programa humano, sino un programa cliente, este aspecto de REST parece un poco extraño debido a todos los "http://www" que el programa cliente puede no tener utilidad.
Parece que el software defectuoso corre el riesgo de escribirse a través de posibles interpretaciones erróneas de identificadores "con significado humano". Para evitar interpretaciones defectuosas, parece que la información fuera de banda es necesaria para construir URI correctamente. Si la información fuera de banda es necesaria, modifique los enlaces; entonces, ¿de qué sirve decir que los hipermedios tienen que conducir el estado de la aplicación? Si necesita información fuera de banda, ¿por qué molestarse en que el servidor envíe un montón de enlaces? – H2ONaCl
OK, para responder mi propia pregunta sobre el servidor que envía enlaces, sé que es una buena idea que el cliente comience con un solo recurso bien conocido y que los servidores envíen enlaces es una buena idea y las cadenas de consulta pueden ser convenientes para el historial razones o porque se asignan a un espacio de nombre heredado en el otro lado de una puerta de enlace. Sin embargo, para Fielding decir que quiere maximizar el uso fortuito de los URI no es exactamente lo mismo que alentar a las personas a modificar las cadenas de consulta (de manera segura mediante el uso de información fuera de banda, o insegura). Son las cadenas de consulta las que están en el corazón de mi preocupación. – H2ONaCl
La manipulación de cadenas de consulta parece un acoplamiento estricto. ¿El REST realmente fomenta el acoplamiento firme? – H2ONaCl