Как выполнить «Hello World» с Kinvey через REST?

Я новичок в REST, и у меня много проблем с пониманием того, как его использовать, особенно с BAAS Kinvey. и Javascript. Я потратил довольно много времени, пытаясь научиться использовать REST (кстати, найти его невероятно сложно), и лучший ресурс, который я нашел, — это статья IBM.

Просматривая веб-сайт Kinvey, я нашел это "руководство", но мне это не помогает. Я думаю, это потому, что предполагается, что у меня есть опыт использования служб REST. Руководство содержит детали, но не контекст. (Это и это помощь, но это всего лишь фрагменты).

Опять же, здесь есть различные вопросы по SO (здесь, здесь, здесь, здесь и здесь) но все они либо очень специфические, либо очень общие.

Что я люблю видеть, это что-то вроде:

  1. Какой тип объекта [javascript] создать (например, XMLHttpRequest?)
  2. Как построить URL-запрос (создать запрос).
  3. Как части запроса относятся к приложению (бэкенду), на которое я ориентируюсь.
  4. Как/где/соответствуют ли мои учетные данные.
  5. Как обрабатывать ответ.

Опять же, руководство на сайте Kinvey предполагает слишком много обо мне, я не знаю о рукопожатиях или конечных точках (конечно, я их гуглю, но без контекста трудно установить связь с тем, как это работает с Kinvey).

Часть Kinvey «попробуйте это» также сбивает с толку. Что он делает и почему он ломается, когда я меняю приложения, а также, почему/как он связан с моей учетной записью? Опять же, он показывает фрагменты, а не общий пример.

Я бы предположил, что будет простой 15-20-строчный текст, показывающий живой пример — или, по крайней мере, пример, в котором явно объяснено, куда вдаваться подробности.

Я могу понять все это, как только увижу рабочий пример, мне просто нужен этот полный пример, показывающий все от начала до конца.

Примечание: я использую Angularjs; однако я хотел бы знать, как бы я сделал это в JS вручную, затем я вернусь и узнаю, как Angular это абстрагирует. Если вы также знаете Angular, пожалуйста, добавьте и этот пример.

Спасибо, парни.


person Alan Klement    schedule 21.06.2013    source источник


Ответы (1)


Я постараюсь ответить на них один за другим в меру своих возможностей. Я не могу опубликовать более двух ссылок без повторения, поэтому просто удалите «s» перед моими ссылками, чтобы использовать их.

Для HTTP-запросов через javascript важно понимать CORS.

руководство по CORS

AJAX,

также было бы полезно проверить

XmlHttpRequest

Чтение спецификации по отдыху, вероятно, является одним из лучших способов узнать мелкие детали того, что такое REST и на что он способен. Поиск руководств по использованию REST в программировании во многом зависит от языка.

1: Какой объект javascript создать (например, XMLHttpRequest?)

Это зависит от вашего браузера и его версии.

Есть:

XMLHttpRequests, найденные в IE7+, Firefox, chrome, safari (последние версии этих браузеров поддерживают CORS, см. здесь который.

XDomainRequests: есть в IE 8 и IE 9 (поддерживает CORS)

activeXObject: найдено в IE 6,7,8,9,10 (не поддерживает CORS)

Вы можете узнать больше о конкретных объектах IE, используя справочник Microsoft msdn api. Обычно быстрый поиск по этим объектам дает хорошие результаты.

2: Как составить URL-запрос (создать запрос)

Предполагая, что это для создания javascript, запрос зависит от сервера, на который вы его отправляете. Я уже связал вас с несколькими ссылками, которые помогут вам создать http-запрос и отправить его. Если вы хотите увидеть реальную реализацию, которая сейчас работает на практике, вы можете проверить:

функция запроса в файле Apigee usergrid.js в строке 67. (в то время, когда я опубликовал это),

Если вы хотите увидеть, как построить строку запроса ('?' после URI), проверьте функцию encodeParams в этой ссылке. Обратите внимание, что есть много способов сделать это. Это только один. Вы можете легко просто добавить "param=value" к "uri" + '?'

Следует отметить, что пример Apigee не является кросс-браузерным. Он просто предполагает XMLHttpRequest версии 2, которую поддерживают не все версии браузеров.

3: Как части запроса относятся к приложению (бэкенду), на которое я ориентируюсь.

Если вы нацелены на kinvey, предоставленная вами ссылка RESTful API действительно лучший способ объяснить это. В нем подробно описывается, как должны выглядеть заголовки вашего URL-адреса и http-запроса для действий, которые вы пытаетесь предпринять. В руководствах Кинви для отдыха есть более конкретные примеры для http-запроса. Компоненты, которые входят в URL-адрес, во многом зависят от серверной части. Если у вас есть более конкретный вопрос, я могу попытаться ответить на него.

4: Как / где / подходят ли мои учетные данные

Это опять же зависит от бэкенда/сервера. Для Kinvey они используют Basic Auth и OAuth. Вы должны проверить их руководства по безопасности для получения дополнительной информации об этом.

Если вы изучили/исследовали первоначальные ссылки, которые я опубликовал, и узнали о http-запросах, то ваши учетные данные будут находиться под заголовком авторизации httpRequest. Для кинвея это обычно выглядит так:

Авторизация: "Базовая" + Base64encoding[appId:appSecret] или "Кинвей" + [authToken]

5: Как обращаться с ответом.

Опять же зависит от бэкэнда/сервера. Вышеупомянутые ссылки на учебник AJAX и CORS показывают, как обрабатывать ответ.

Есть много разных ответов, которые вы можете получить, xml, json, простой текст и т. д. Тип, который вы хотите, обычно указывается в поле принятия заголовка запроса вами или типом содержимого заголовка ответа сервера, который сообщает вам, какой тип он отправил обратно или может отправить обратно, но для этого требуется один раз позвонить на сервер, чтобы увидеть, что он отправляет по умолчанию. Многие mBaaS обычно указывают ответы в своей документации.

Для kinvey они обычно отправляют обратно JSON, поэтому вы можете просто использовать ответ JSON.parse() и получить доступ к нужным вам данным из объекта JSON.

Надеюсь, это ответило на некоторые или все ваши вопросы, и если кто-то считает, что я сделал что-то не так или сказал что-то ужасно неточное, дайте мне знать. Это моя первая публикация о переполнении стека, но я использовал kinvey, а также многие другие mBaaS для своей работы. Так я немного познакомился с ними.

Наконец, если вы узнали то, что хотели, просто используйте javascript API Kinvey, который будет обрабатывать все взаимодействия с RESt за вас. Не нужно изобретать велосипед, если только вам не нужно сделать что-то более конкретное, чего нет в JS-фреймворках.

person CBIII    schedule 10.07.2013
comment
Большое спасибо за это. Я посмотрю на это и посмотрю на принятие / голосование. - person Alan Klement; 11.07.2013
comment
Черт, это отличный ответ. +1! - person ViRALiC; 01.07.2015