2012-07-05 24 views
5

Estoy intentando construir una API para dos recursos, uno con usuarios y el otro con películas. Ambos recursos tienen asociaciones: un usuario tendrá múltiples películas y una película tendrá múltiples usuarios. Presumiblemente, me gustaría diseñar mi API algo como esto:RESTful diseño de API con asociaciones

/api/users/ 
/api/users/:id 
/api/users/:id/movies 

/api/movies/ 
/api/movies/:id 
/api/movies/:id/users 

Pero aquí está el problema: También estoy usando Backbone.js en el lado del cliente para recuperar los datos de la API. Si Si creo una colección en

/api/users/:id/movies 

entonces esto va a funcionar bien para peticiones GET, pero POST y PUT solicitudes que aparentemente luego ser dirigida a:

/api/users/:id/movies/:id 

Pero, aparentemente, sería mejor si se publicó en

/api/movies/:id 

en su lugar. ¿Es eso correcto? ¿Cómo trata la gente en general con las asociaciones de RestFul?

Respuesta

1

No estoy seguro de lo que quiere decir con "las solicitudes POST y PUT aparentemente se dirigirían a ...". ¿Backbone.js agrega automáticamente parámetros a las URL? Si es así, debería considerar configurarlo para que no lo haga, porque no se podrá usar con una API REST. Los enlaces proporcionados por una API REST deben ser completos, no hay nada que agregar o eliminar de ellos.

Finalmente, si desea asociar una película con un usuario. Usted iba a publicar la película (o simplemente su ID) a:

/api/users/:id/movies 
+0

Gracias Laurent. La red troncal agrega una identificación a la URL para POSTAR o PONER un nuevo modelo a la colección a la que pertenece. En otras palabras, la colección tendría URL/api/users/1/movies, y una POST usaría automáticamente la URL/api/users/1/movies /: id. Para mí, parece más apropiado tener POST url be/api/movies /: id en su lugar ... pero quizás estoy equivocado. Del lado del servidor podría, potencialmente, manejar POST a/api/users/1/movies /: id también. – bento

-2

Como entiendo que usted está tratando de averiguar algo legible y forma estándar de la creación de su url servicio REST. La historia real es que la URL del servicio es totalmente diferente del diseño de la API.

url servicio puede ser miradas como:

/api/getMovies/ID de usuario: involucrado con petición de obtención

/api/updateMovieList/ID de usuario: participa con el post

esto son más intuitiva y auto expresivo.

This site tiene un buen recurso para pasar.

+0

parece, necesita actualizar esta respuesta, – Forhad