Para el sitio en el que estoy trabajando, estamos en el proceso de mejorar nuestras URL para un tipo de recurso, específicamente, alejándonos de los ID numéricos hacia cadenas descriptivas únicas. Un ejemplo similar sería pasar de identificar usuarios por ID de base de datos numérica a identificarlos por nombre de usuario (no es nuestro caso específico, sino análogo). Por lo tanto una URL para acceder a la información de un usuario que se utiliza para parecerse a:REST - compatible con múltiples identificadores posibles
/users/48573
Y ahora parece que
/users/thisisausername.
El único problema es que todavía tenemos que ser capaces de ir a buscar a través de identificadores numéricos de alguna manera , para los consumidores heredados de la API. No necesitamos las URL REST mismas para redirigir (por ejemplo, /users/48573
no debe redirigirse a /users/thisisausername
), solo necesitamos un método para obtener los datos correctos utilizando el identificador antiguo. La solución debe proporcionar una forma alternativa de acceder a la información del usuario (que incluye convenientemente el nuevo identificador, nombre de usuario) por ID, o de acceder solo al nombre de usuario por ID. Algunas soluciones posibles podrían ser:
- Utilizando un nodo para especificar algún método de identificación alternativo, p.
/users/byid/48573
- Utilizando un parámetro de consulta para especificar algún método de identificación alternativo, p.
/users/48573?fetchby=id
o/users/48573?byid=true
- Tratamiento de nombre de usuario por ID como otro recurso, p.
/identifiers/username/48573
¿Cuál de estos (si los hay) está más cerca del RESTO adecuado? ¿Cómo lidiarías con el problema?
Terminé la implementación de acceso a través de los campos no-principal identificador como una búsqueda. Esta solución permite buscar múltiples tipos de recursos a través de múltiples campos, manteniendo solo uno como el identificador primario. Por consistencia, las listas de devolución de API de "búsqueda". Así que la forma oficial para tener acceso a un usuario es: /usuario/thisisausername y para el acceso de Identificación, tenemos:? /usuarios de id = 48573 Del mismo modo, se podría buscar en un número de diferentes campos , como en: /users? firstName = Kelly La inspiración era de: http://jwyseur.blogspot.com/2008/12/uri-design-for-rest.html (ver "buscar un recurso") –
¿Entonces te pegaron en el almacenamiento en caché? Tengo el mismo problema que tú, pero no puedo resolver el problema a través de los parámetros de consulta que eliminan uno de los principales beneficios de una API REST. Me gusta tu primera sugerencia con viñetas ... – HDave