Разберитесь С Позвоночником.Яш остальные звонки
Я пытаюсь понять суть.метод синхронизации 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.com
Update (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 позаботится о вызовах.