2012-07-05 6 views
5

私は2つのリソース(ユーザーと1つのリソースとムービーの2つのリソース)用にAPIを構築しようとしています。両方のリソースには関連付けがあります。ユーザーは複数のムービーを持ち、ムービーは複数のユーザーを持ちます。おそらく、私はこのような何か私のAPIを設計したい:アソシエーションを含むRESTfulなAPIデザイン

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

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

しかし、ここで問題があります:私はまた、APIデータをフェッチするために、クライアント側でBACKBONE.JSを使用しています。一見、それは良いだろう、

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

しかし:私は

/api/users/:id/movies 

でコレクションを作成した場合、これはGETリクエストのためにうまく動作しますが、POSTやPUTリクエストする場合は、一見、その後に向けられます代わりに

/api/movies/:id 

に投稿された場​​合あれは正しいですか?人々はRestFulの協会をどのように扱いますか?

答えて

1

"POSTとPUTのリクエストは、一見次のように指示されます..."という意味が不明です。 Backbone.jsは自動的にパラメータをURLに追加しますか?その場合は、REST APIで使用できないため、設定しないでください。 REST APIによって提供されるリンクは、完全なリンクである必要があります。追加または削除するものは何もありません。

最後に、ムービーをユーザーに関連付ける場合は、私はあなたのRESTサービスのURLを作成するための読みやすい何かと標準的な方法を把握しようとしている理解したよう

/api/users/:id/movies 
+0

ありがとうLaurent。バックボーンはURLにIDを付加して、それが所属するコレクションに新しいモデルをPOSTまたはPUTします。つまり、コレクションにはURL/api/users/1/moviesがあり、POSTはURL/api/users/1/movies /:idを自動的に使用します。私の場合、代わりにPOST url be/api/movies /:idを使用する方が適切ですが、おそらく私は間違っています。サーバー側では、/ api/users/1/movies /:idにPOSTを処理する可能性があります。 – bento

-2

:あなたは映画に(あるいは単にそのID)をPOSTでしょう。実際の話は、サービスのURLがAPIのデザインとはまったく異なることです。

/API/getMovies/userIdを::

サービスのURLは次のようになりますすることができGETリクエスト

/API/updateMovieList /ユーザーIDで関与:関与ポスト

で、これはより直感的かつ自己されています表現力豊かな。

This siteには適切なリソースがあります。

+0

この回答を更新する必要がありますが、 – Forhad

関連する問題