Разберитесь С Позвоночником.Яш остальные звонки


Я пытаюсь понять суть.метод синхронизации 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 75

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

есть три различия между предыдущим примером и этим.

  1. The метод теперь POST.
  2. The путь теперь /login.
  3. есть дополнительная строка, называемая тело.

в то время как есть куча других методов, те, которые используются в 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 позаботится о вызовах.