プロジェクトIDがユーザーモデルの一部ではない場合、それはユーザーIDの配列がプロジェクトモデルの一部であることを意味します...そうですか?したがって、これはユーザーをプロジェクトに追加するのに適切だと思います。
PUT /projects/(projectid)/users/(userid)
ただし、サービスの利用者(つまり、バックボーン)がこれらのURLを必要としない場合は、これらのURLをサポートする必要がない場合があります。たぶん、単一のエンドポイントでプロジェクトを更新したいだけです。
PUT /projects/(projectid)
また、Ajaxのポストコールには、「このプロジェクトの更新」リクエストの一部としてユーザーのリストが含まれます。
UIに応じて、Backboneのいずれかの形式のURLを使用することをお勧めします。URLの最初の形式は、「ユーザーxをプロジェクトyに追加する」などのリクエストにのみ役立ちます(たとえば、管理者が「このユーザーを現在のプロジェクトに追加する」をクリックしたときなど)。
URLの2番目の形式は、プロジェクトホールセールを更新するために使用する可能性のあるものであり、ユーザーのリスト、プロジェクトの名前などを含めることができます。それが「プロジェクトの編集」ビューです。
var ProjectModel = Backbone.Model.extend({
defaults: {
"project_name": "",
"users: [0]
},
urlRoot: "/myrestapi/projects",
url: function() {
return this.urlRoot + "/" + this.cid;
}
});
このモデルでのバックボーン保存要求は、URLへの(POST?PUT?)をトリガーします。
/myrestapi/projects/(cid)
プロジェクトのモデル状態を表す投稿データを使用して:
{ "project_name": "foo", "users": [15, 18, 42] }
次に、サーバーのデータストアへの更新をトリガーするのはRESTサービス次第です...