backbone.jsでsyncを呼んだ時にアクセスされるURLの変更
backbone.jsで作成したモデル(Backbone.Model.extendで作成したオブジェクト)はsave(),destroy(),fetch(),create()などのメソッドを持っている。これらは、呼ばれると裏側でsync()メソッドを呼び出している。このsync()がサーバ側に問い合わせて、永続化が行われると言う仕組み。デフォルトでは以下のような形でREST形式で問い合わせが行われる。
モデルのthis.urlが/api/fooの時の例
モデルが呼ぶメソッド | url | HTTPのメソッド | |
create | /api/foo | POST | |
save(既にデータが存在している場合) | /api/foo | PUT | |
destroy | /api/foo | DELETE | |
fetch | /api/foo | FETCH |
backbone.jsのモデルは、このように同じURLに対して、HTTPメソッドを分ける形でクライアント側のデータとサーバ側のデータの同期をしてる。
(ちなみに、モデルにthis.urlを定義しておくと、そのURLがリソースとして使われる。this.urlを関数にしておくと、関数の実行結果がリソースへアクセスするURLとして使われる)
デフォルトでは以上の通りだけれど、sync()を上書きすることで、アクセス先を変えることができる。