Pregunta

En el trabajo aquí, tenemos un cuadro que sirve fuentes XML para socios comerciales. Las solicitudes de nuestros feeds se personalizan especificando parámetros y valores de cadena de consulta. Algunos de estos parámetros son necesarios, pero muchos no lo son.

Por ejemplo, hemos requerido que todas las solicitudes especifiquen un GUID para identificar al socio, y una solicitud puede ser para " obtener la última " o " buscar " acción:

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

Estructurar un esquema de URL RESTful 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, ¿cómo debemos manejar la docena de parámetros opcionales que tenemos? Muchos de estos son mutuamente exclusivos, y muchos se requieren en combinaciones. Muy rápidamente, el número de rutas posibles se vuelve abrumadoramente complejo.

¿Cuáles son algunas de las prácticas recomendadas sobre cómo asignar URL con cadenas de consulta complejas a más amigable / REST / ful / paths?

(Me interesan las convenciones, esquemas, patrones, etc. No tecnologías específicas para implementar la reescritura de URL en un servidor web o en un marco).

¿Fue útil?

Solución

Debería dejar los parámetros de consulta opcionales en la cadena de consulta. No hay " regla " en REST que dice que no puede haber una cadena de consulta. En realidad, es todo lo contrario. La cadena de consulta debe usarse para alterar la vista de la representación que está transfiriendo al cliente.

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

Creo que una taxonomía REST mucho mejor se vería así (asumiendo que el contenido de tu feed XML es un " artículo "):

Si no está pensando en las entidades que está representando mientras construye su estructura REST, no está haciendo REST. Estás haciendo otra cosa.

Vea este artículo sobre las mejores prácticas de REST . Es viejo, pero puede ayudar.

Otros consejos

¿Parámetros con valores? Una opción es la cadena de consulta. Su uso no es inherentemente no reparador. Otra opción es utilizar el punto y coma, Tim Berners-Lee habla sobre ellos y podrían encajar en el proyecto de ley, permitiendo que la URL tenga sentido, sin tener rutas masivamente largas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top