Как вы используете ember.js с внешними (нелокальными) конечными точками API?

Кто-нибудь успешно работал с интерфейсными приложениями с Ember.js и потреблял конечные точки с внешнего хоста? Если да, то поделитесь своим опытом.

Вот несколько вариантов.

  • Делайте запросы через локальный прокси (просто проходите).
  • Используйте прокси + Rails, чтобы вы могли работать так, как хочет Ember.js.
  • Используйте запросы CORS, чтобы обойти проблему XSS.

Кажется, что канонический подход к Ember.js заключается в использовании локального приложения Rails для подачи json в приложение Ember.js. Судя по тому, что провела моя команда, CORS не является распространенным способом работы с Ember.js.

РЕДАКТИРОВАТЬ:

Что касается комментария ниже, это скорее вопрос о том, как использовать Ember-данные с внешним API, а не сам Ember.js.


person bobbywilson0    schedule 04.10.2012    source источник
comment
были ли у вас какие-то специфические проблемы Ember при использовании CORS в качестве связи клиент-сервер?   -  person Misha Reyzlin    schedule 04.10.2012
comment
В основном это было связано с тем, что Ember-data на самом деле не поддерживал его. Я был бы открыт для других абстракций данных, но из того, что я обнаружил, Ember-данные — единственная, над которой все еще активно работают.   -  person bobbywilson0    schedule 04.10.2012


Ответы (2)


Взаимодействие между сервером и клиентом — это не то, что Ember.JS решает за вас, для этого он использует jQuery, поэтому со стороны Ember.JS не должно быть никаких ограничений.

Все перечисленные вами вещи являются законными способами работы с API, которые обслуживаются из разных доменов, в зависимости от поддержки пользовательского агента, которую вы хотите достичь (некоторые клиенты вообще не поддерживают CORS или в ограниченных формах).

person Misha Reyzlin    schedule 04.10.2012
comment
Спасибо за ответ. Вы правы, взаимодействие сервер-клиент на самом деле не так уж и важно для Ember, но я думаю, что это проблема, которую Ember-data пытается решить с помощью своей абстракции модели данных. Например, REST-адаптер хранилища данных обрабатывает взаимодействие между сервером и клиентом для доступа к конечным точкам json, которые он превращает в модели. - person bobbywilson0; 04.10.2012
comment
Просматривая README в ember-data, кажется, что вы можете переопределить встроенный метод поиска вашего адаптера. В своих примерах они по-прежнему используют jQuery, а jQuery должен хорошо работать с CORS. Если бы вы предоставили упрощенную версию своего кода, который не работает, было бы намного проще сказать, что не так. Вы можете использовать SoundCloud API для тестирования, так как он поддерживает CORS ;-) - person Misha Reyzlin; 04.10.2012

              **Approach 1**

Если вы посмотрите на этот пост в блоге: http://eng.netwallet.com/2012/04/17/simple-cross-domain-ajax-with-a-wormhole-5/

На главной странице они используют porthole.js и объект Ember, который настраивает windowProxy иллюминатора и прослушивает сообщения от него.

Porthole.js — это небольшая библиотека Javascript, которая делает безопасным и простым взаимодействие с междоменными iFrames.

Вы всегда можете использовать этот подход изнутри ember-data и RestAdapter, чтобы переопределить такие вещи, как упомянутые gryzzly.

           **Approach 2**

Также в сообщении ниже они делают cors, используя goliath в качестве прокси для работы с ember-data и elasticsearch, но со своим собственным адаптером:

http://www.elasticsearch.org/tutorials/2012/08/22/javascript-web-applications-and-elasticsearch.html

Весь код из сообщения находится здесь: https://gist.github.com/3369662

person brg    schedule 08.12.2012