Backbone.emulateHTTP值為true時,會模擬restful的動作,將delete和put(update) method,全部都用post method代替,然後添加X-HTTP-Method-Override的header和_method的參數。
Example如下:
先建立一個Book Model。
Backbone.emulateHTTP = true; Backbone.emulateJSON = true; var Book = Backbone.Model.extend({ urlRoot:"/books" }); var book = new Book({id:32});
執行save時,會發送request到server。(在backbone的model id有值的時候,save會是update功能,反之則為create。)
book.save({name:"Tom"});
發送request到server端的header,會添加以下這段:
X-HTTP-Method-Override:PUT
當Backbone.emulateJSON為true時,request的content-type會設定為application/x-www-form-urlencoded,傳遞到server參數如下:
model={"id":32,"name":"Tom"}&_method=PUT
Backbone.emulateJSON為false時,request的content-type會設定為application/json,傳遞到server參數如下:
{"id":32,"name":"Tom"}
所以當request的content-type不是application/json時,使用emulateHTTP,會多傳一個_method的參數到server端,可供server辨識。