una - ventajas api rest
Diseño de URL RESTful: cómo consultar mediante O entre parámetros (3)
¿Cómo diseñaría una consulta RESTful para soportar O operando entre parámetros? Digamos que mi recurso tiene dos campos field1 y field2. ¿Cómo diseñaría la URL para habilitar la siguiente consulta?
"Obtener mis recursos donde campo1 = x O campo2 = y"
Diseñar consultas en REST es bastante directo, pero solo he visto consultas que admiten AND entre campos de consulta. eg / myresource? field1 = x & field2 = y
Una posible solución puede ser proporcionar un único parámetro de consulta con texto libre en la parte, por ejemplo:
GET / myresource? Q = {campo1 = x O campo2 = y}
Pero eso haría más complicado para los clientes analizar y ampliar o reducir los campos filtrados.
¿Que sugieres?
Los parámetros de consulta no están relacionados por definición Y, son solo parámetros inertes, la forma de manejarlos depende de usted. Para una búsqueda en O sugeriría:
GET /myresources?field1=x&field2=y&inclusive=true
Si desea establecer de forma predeterminada una relación AND (razonable), y por supuesto, cualquier otra extensión que desee es posible.
Por lo que vale, SO usa el siguiente formato para encontrar preguntas con múltiples etiquetas:
http://.com/questions/tagged?tagnames=jquery or css or asp.net or php or web-development or svn
Es perfectamente razonable separarlos con ,
o ;
asumiendo que esos no son caracteres válidos para las etiquetas mismas. Los motores de búsqueda suelen utilizar q=keyword1+keyword2
y codificación de URL +
cualquier en las palabras clave, que es lo que le sugiero que haga si esto es para un URI de búsqueda.
depende
si quiere que se acceda a su recurso ALLWAYS con condition1 O condition2, puede tratarlos de esa manera ...
pero si quieres tener ambas posibilidades (usando AND u OR) tendrías que implementar algo como annakata, un parámetro que indica cómo deben agregarse las condiciones a la consulta que ...
si quieres tener un enfoque más flexible (cond1 y cond2 o cond3) no veo otra opción que implementar tu propia consulta con texto libre, como dijiste ...
Por otro lado, si siempre está consultando el mismo campo (que creo que no es el caso porque ha especificado field1, field2) puede usar el enfoque de allemb, y simplemente usar algún caracter ("," o ";") para separar valores...
personalmente, he desarrollado algún tipo de lenguaje de micro consulta, como
field1 = val1..val2 (field1 entre val1 y val2) field1 => val2 (field1> val2) field1 = val1; val2 (field1 = val1 o field1 = val2) filed1 = val1 (field1 contiene val1)
field1 = val1..val2 y> val3 (campo1 entre val1 y val2 y campo1> val3 ...
Bueno, ya captas la idea
pero luego combino todas las condiciones con y, así que esto es solo un ejemplo expandido de waht aleemb estaba diciendo ...