Próbuję utworzyć interfejs API dla dwóch zasobów: jednego z użytkownikami i drugiego z filmami. Oba zasoby mają powiązania - użytkownik będzie miał wiele filmów, a film będzie miał wielu użytkowników. Można przypuszczać, że będę zaprojektować API coś takiego:Interfejs API RESTful ze skojarzeniami
/api/users/
/api/users/:id
/api/users/:id/movies
/api/movies/
/api/movies/:id
/api/movies/:id/users
Ale tutaj jest problem: Używam również backbone.js po stronie klienta w celu pobrania danych API. Jeśli Gdybym utworzyć kolekcję na
/api/users/:id/movies
to będzie działać dobrze dla żądań GET, ale POST i PUT żądań byłoby pozornie następnie być kierowane pod adresem:
/api/users/:id/movies/:id
Ale pozornie byłoby lepiej jeśli zamiast tego wysłano go pod numer
/api/movies/:id
. Czy to jest poprawne? Jak ludzie zazwyczaj radzą sobie ze stowarzyszeniami RestFul?
Dzięki Laurent. Backbone dołącza identyfikator do adresu URL do POST lub umieszcza nowy model w kolekcji, do której należy. Innymi słowy, kolekcja będzie miała URL/api/users/1/movies, a POST automatycznie użyje adresu URL/api/users/1/movies /: id. Wydaje mi się, że bardziej odpowiedni jest adres URL POST/api/movies /: id ... ale może się mylę. Po stronie serwera mogłem potencjalnie obsłużyć również POST do/api/users/1/movies /: id. – bento