2008-10-03 24 views
7

En el trabajo aquí, tenemos un cuadro que proporciona feeds XML a los socios comerciales. Las solicitudes de nuestros feeds se personalizan al especificar los valores y los parámetros de la cadena de consulta. Algunos de estos parámetros son obligatorios, pero muchos no lo son.RESTifying URLs

Por ejemplo, hemos requieren todas las solicitudes para especificar un GUID para identificar la pareja, y una solicitud puede ser o bien para una "última" o "buscar" la acción:

Para una búsqueda: http://services.null.ext/?id=[GUID]&q=[Search Palabras clave]
últimos datos en la categoría: http://services.null.ext/?id=[GUID]&category=[ID]

la estructuración de un esquema de URL REST para estos parámetros es fácil:

Buscar: http://services.null.ext/[GUID]/search/[Keywords]
Último: http://services.null.ext/[GUID]/latest/category/[ID]

Pero lo que ¿cómo debemos manejar la docena de parámetros opcionales por lo que tenemos? Muchos de estos son mutuamente exclusivos, y muchos son necesarios en combinaciones. Muy rápidamente, la cantidad de caminos posibles se vuelve abrumadoramente compleja.

¿Cuáles son algunas de las prácticas recomendadas para cómo asignar URLs con cadenas de consulta complejas a rutas más amigables/REST/ful /?

(no estoy interesado en convenciones, esquemas, patrones, etc. tecnologías específicas para aplicar la reescritura de URL en un servidor web o en un marco.)

+0

REST no tiene NADA que ver con URI bonitos o convenciones URI anidadas. Esto se parece a RPC. – aehlke

Respuesta

4

Debe dejar los parámetros de consulta opcionales en la cadena de consulta. No hay una "regla" en REST que diga que no puede haber una cadena de consulta. En realidad, es todo lo contrario. La cadena de consulta se debe usar para modificar la vista de la representación que está transfiriendo de vuelta al cliente.

Siga las "Entidades con estado representable" para conocer los componentes de la ruta URL. La categoría parece estar bien, pero ¿qué es exactamente lo que estás alimentando a través de XML? ¿Publicaciones? Artículos del catálogo? ¿Partes?

Creo que una mejor taxonomía RESTO sería el siguiente (suponiendo que el contenido del feed XML es un "artículo"):

Si' Si no estás pensando en las entidades que representas mientras construyes tu estructura REST, no estás haciendo REST. Estás haciendo otra cosa.

Eche un vistazo a this article on REST best practices. Es viejo, pero puede ayudar.

+0

Devolución de los resultados de búsqueda, básicamente, en base a consultas de palabras clave, categorías, tipos de datos (imágenes y videos), tipos de archivos, tipos MIME, lenguaje de metadatos, etc. – core

1

parámetros con los valores? Una opción es la cadena de consulta. Usarlo no es intrínsecamente no reparador. Otra opción es usar el punto y coma, Tim Berners-Lee talks about them, y es posible que se ajusten a la factura, lo que permite que la URL tenga sentido, sin tener trayectorias excesivamente largas.

+0

Estoy tratando de EVITAR la gran dependencia de la cadena de consulta.:) – core

+0

+1 Tim Berners-Lee Referencia al tema – enobrev