2015年11月19日

Backbone.jsで永続化時のURLやらmethodを変更

通常Backbone.jsでは以下のメソッドを利用した場合に右に書いたようなAjax通信を行いサーバーとの動機を行おうとする。(Collection.urlが"/api/foo"の場合)






Model.create/api/fooPOST
Model.save/api/fooPUT
Model.destroy/api/fooDELETE
Collection.fetch/api/fooFETCH


ただ、これをAPI仕様に合わせる為に以下のように変更する。






Model.create/api/addPOST
Model.save/api/deditPOST
Model.destroy/api/deletePOST
Collection.fetch/api/readPOST


Collectionはextend時に以下のようなrequestInfoオブジェクトとsyncメソッドを指定。

app.Library = Backbone.Collection.extend({
model : app.Book,
url : "/api/books",
requestInfo : {
'read' : {type: 'POST', url: "/api/books/read"}
},
sync: function(method, model, options){
options.url = this.requestInfo[method].url;
options.type = this.requestInfo[method].type;
Backbone.sync(method, model, options);
}
});


Modelはextend時に以下のようなrequestInfoオブジェクトとsyncメソッドを指定。
(サーバーのせっていによってはemulateJSONの指定は不要)

app.Book = Backbone.Model.extend({
requestInfo : {
'create': {type: 'POST', url: "/api/books/add"},
'update': {type: 'POST', url: "/api/books/edit"},
'delete': {type: 'POST', url: "/api/books/delete"}
},
sync: function(method, model, options){
options.url = this.requestInfo[method].url;
options.type = this.requestInfo[method].type;
options.emulateJSON = true;
if(model)options.data = model.toJSON();
Backbone.sync(method, model, options);
}
});

タグ:Backbone.js
posted by ねこまんま at 02:05 | Comment(0) | TrackBack(0) | Backbron.js | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック