2012-11-20 4 views
17

Tôi bây giờ là một nhà phát triển front-end, và tôi có một dự án mà là tốt để sử dụng BackboneJS, và phía máy chủ được viết bởi những người khác. Có ai có thể cho tôi biết làm thế nào để ghi đè lên xóa, cập nhật, thêm, và như vậy trong một cách không-RESTful? URL của server-side có thể là như thế này:làm thế nào để sử dụng Backbone.js, nhưng theo cách KHÔNG-RESTful?

  • add: www.domain.com/addBookById
  • remove: www.domain.com/removeBookById

Cảm ơn rất nhiều !!

+4

* bây giờ tôi là một nhà phát triển front-end * ... ** Uh-oh ** Haha, chỉ đùa thôi ... – McGarnagle

+1

! nhìn vào xương sống.sync' –

Trả lời

19

Backbone sử dụng Backbone.sync để quản lý tất cả các thông tin liên lạc với máy chủ. Có hai điều quan trọng về số sync cho bạn; trước hết, nó trông như thế này:

Phương pháp chữ ký của Backbone.syncsync(method, model, [options])

  • phương pháp - phương pháp CRUD ("create", "read", "update", hoặc "delete")
  • mô hình - mô hình được lưu (hoặc bộ sưu tập cần đọc)
  • .210
  • tùy chọn - thành công và lỗi callbacks, và tất cả các yêu cầu tùy chọn jQuery khác

và thứ hai là bạn có thể ghi đè lên sync trên một cơ sở cho mỗi mô hình và mỗi bộ sưu tập. Vì vậy, bạn có thể thêm sync thực hiện của riêng bạn để mô hình của bạn:

var M = Backbone.Model.extend({ 
    sync: function(method, model, options) { 
     //... 
    }, 
    //... 
}); 

Nếu bạn nhìn vào method bạn có thể quyết định URL để sử dụng và cho dù bạn đang làm một GET, POST, ... theo yêu cầu. model sẽ cho bạn biết dữ liệu nào cần gửi đến máy chủ. Bạn sẽ muốn hợp nhất options vào các tùy chọn $.ajax bạn muốn sử dụng. Có một cái nhìn tại việc thực hiện tiêu chuẩn của Backbone.sync, nó là khá thẳng về phía trước và sẽ cho bạn thấy những gì bạn cần làm: chỉ cần thay thế xử lý URL và thả một số tính năng bạn không quan tâm (chẳng hạn như emulateHTTPemulateJSON).

+0

Tổng quan tuyệt vời. – alex

0

Dưới đây là một ví dụ về một Backbone.js gọi ajax chỉnh sửa:

var Forecast = Backbone.Model.extend({ 
    url: function() { 
    return "http://api.wunderground.com/api/7eaec3b21b154448/conditions/q/" + this.get("zip") + ".json"; 
    }, 
    parse : function(data, xhr) { 
    var observation = data.current_observation; 
    return { 
     id: observation.display_location.zip, 
     url: observation.icon_url, 
     state: observation.display_location.state_name, 
     zip: observation.display_location.zip, 
     city: observation.display_location.city, 
     temperature: observation.temp_f 
    }; 
    } 
}); 

Từ: Elijah Manor's Intro to Backbone.JS

+0

mục đích của tôi là "Trong phong cách RESTful truyền thống," một tài nguyên cho một url ", nhưng trong dự án của tôi, tôi cần phải xem xét" trên tài nguyên để url khác nhau ->/getxxbyxx, deletexxbyxx, "Tôi rất bối rối ! –

3

Tùy chọn tốt nhất trong trường hợp của bạn là plugin như Backbone.service. Đó là dịch vụ Backbone cho apis không yên tĩnh hoặc bán yên tĩnh.

// define server targets/endpoints 
var targets = { 
    login: ["/login", "post"], 
    signup: ["/signup", "post"], 
    logout: ["/logout", "get"], 
    search: "/search" // defaults to get 
    resetPassword: ["/resetpassword", "post"], 
    updateSettings: ["/updateSettings", "post"] 
}; 

// standalone service 
var service = new Backbone.Service({ url: "http://localhost:5000", targets: targets }); 

// extend backbone model 
var User = Backbone.Model.extend(service); 

Bạn có thể sử dụng nó như thế này:

var user = new User(); 
user.login({ username: 'bob', password: 'secret' });