Разберитесь С Позвоночником.Яш остальные звонки
Я пытаюсь понять суть.метод синхронизации js и просматривал документацию по http://backbonejs.org/#Sync
Он говорит:
The default sync handler maps CRUD to REST like so:
create → POST /collection
read → GET /collection[/id]
update → PUT /collection/id
delete → DELETE /collection/id
теперь, поскольку я всегда был в разработке front-end и новичок в Backbone, мне трудно понять вышеизложенное...Я никогда не использовал REST или любые другие серверные протоколы...
не могли бы вы объяснить то же самое в простых терминах (например, как остальные карты, когда мы используем Позвоночник.синхронизация) Любой очень простой пример был бы очень полезен...
2 ответа:
если вы не возражаете, я начну с прояснения некоторых формулировок. REST-это не протокол сам по себе, это просто способ использования протокола HTTP. Стиль REST особенно полезен для API, как я надеюсь, вы увидите. Когда API соответствует этому стилю, он называется "спокойным". Если API, с которым вы работаете, не является RESTful, вам придется внести много изменений в Backbone.синхронизация для того, чтобы заставить его работать. Так что надеюсь, это так! :)
HTTP Протокол
мне нравятся примеры, поэтому вот HTTP-запрос, чтобы получить HTML для этой страницы:
GET /questions/18504235/understand-backbone-js-rest-calls HTTP/1.1 Host: stackoverflow.com[необязательно] если вы когда-либо играли в командную строку или терминал, выполните команду
telnet stackoverflow.com 80и вставка в выше, а затем нажмите enter пару раз. Вуаля! HTML во всей своей красе.в этом примере...
GETэто метод./questions/18504235/understand-backbone-js-rest-calls- это путь.HTTP/1.1- это протокол.Host: stackoverflow.comпример заголовок.Ваш браузер делает примерно то же самое, только с большим количеством заголовков, чтобы получить HTML для этой страницы. Круто, да?
поскольку вы работаете в интерфейсе, вы, вероятно, видели тег формы много раз. Вот пример одного из них:
<form action="/login" method="post"> <input type="text" name="username" /> <input type="password" name="password" /> <input type="submit" name="submit" value="Log In" /> </form>когда вы отправляете эту форму вместе с соответствующие данные, Ваш браузер отправляет запрос, который выглядит примерно так:
POST /login HTTP/1.1 Host: stackoverflow.com username=testndtv&password=zachrabbitisawesome123&submit=Log%20Inесть три различия между предыдущим примером и этим.
- The метод теперь
POST.- The путь теперь
/login.- есть дополнительная строка, называемая тело.
в то время как есть куча других методов, те, которые используются в RESTful приложения являются
POST,GET,PUTиDELETE. Это говорит серверу, какой тип действия он должен предпринять с данными, без необходимости иметь разные пути для всего.назад к позвоночнику
так что, надеюсь, теперь вы понимаете немного больше о том, как работает HTTP. Но как это связано с позвоночником? Давайте выясним!
вот небольшой фрагмент кода, который вы можете найти в магистральном приложении.
var BookModel = Backbone.Model.extend({ urlRoot: '/books' }); var BookCollection = Backbone.Collection.extend({ model: BookModel , url: '/books' });создать (Сообщение)
поскольку мы используем RESTful API, это все, что нужно для создания, чтения, обновления и удаления всей нашей информации о книге! Давайте начнем с создания новой книги. Достаточно следующего кода:
var brandNewBook = new BookModel({ title: '1984', author: 'George Orwel' }); brandNewBook.save();позвоночник понимает, что вы пытаетесь создать новая книга, и знает из информации, которая была дана, чтобы сделать следующий запрос:
POST /books HTTP/1.1 Host: example.com {"title":"1984","author":"George Orwel"}Read (GET)
посмотрите, как легко это было? Но мы хотим получить эту информацию в какой-то момент. Допустим, мы побежали
new BookCollection().fetch(). Позвоночник бы понял, что ты пытаешься читать a коллекция книг, и он сделал бы следующий запрос:GET /books HTTP/1.1 Host: example.comБАМ. Так просто. Но, скажем, мы хотели получить информацию только для одной книги. Скажем, книга № 42. Скажем, мы побежали
new BookModel({ id: 42 }).fetch(). Позвоночник видит, что вы пытаетесь читать a один книга:GET /books/42 HTTP/1.1 Host: example.comUpdate (PUT)
предполагая, что вы понимаете ajax-вызовы (POST, GET и т. д. В "/collection " и т. д.).
Backbone использует синхронизацию для маршрутизации некоторых моделей и методов коллекций для вызовов REST.
model/collection.fetch() => GET model.save() => POST (isNew()) model.save() => PUT (!isNew()) model.destroy() => DELETE
collection.create()звонкиmodel.save() (isNew()) => POSTЕсли вы передадите url (/collection), который вы хотите использовать для модели/коллекции, Backbone позаботится о вызовах.