2012-10-04 24 views
2

有沒有人成功使用Ember.js處理前端應用程序,並從外部主機使用端點?如果是這樣,請分享您的經驗。如何將ember.js與外部(非本地)API端點一起使用?

這裏有幾個選項。

  • 通過本地代理進行請求(只是通過)。
  • 使用代理+ Rails,以便您可以按照Ember.js要求的方式工作。
  • 使用CORS請求來解決XSS問題。

看來Ember.js的規範方法是使用本地Rails應用程序來爲Ember.js應用程序提供json。從我的團隊所做的研究來看,CORS似乎不是一種與Ember.js合作的常用方式。

編輯:

對於下面的評論,這真的是越來越如何使用灰燼數據與外部API,而不是Ember.js本身的問題。

+0

當你嘗試CORS作爲客戶端 - 服務器通信時,你有一些Ember特定的問題嗎? –

+0

大多數情況下,這是Ember的一個問題 - 數據並沒有真正支持它。我會接受其他數據抽象,但從我發現的Ember數據是唯一仍在積極研究的數據。 – bobbywilson0

回答

2

服務器 - 客戶端通信不是Ember.JS正在爲您解決的問題,它使用jQuery來實現,因此Ember.JS不應該有任何限制。

您列出的所有內容都是處理來自不同域的API的合法方式,具體取決於您想實現的用戶代理支持(某些客戶端根本不支持CORS或限制形式)。

+0

感謝您的回覆。你說得對,服務器 - 客戶端通信並不是真正的Ember事物,但我確實認爲Ember數據試圖通過數據模型抽象來解決這個問題。例如,數據存儲REST適配器正在處理服務器 - 客戶端通信以訪問json端點,它將變成模型。 – bobbywilson0

+1

在ember-data上查看README,看起來好像你可以重寫適配器的內建「find」方法。在他們的例子中,他們仍然使用jQuery,jQuery應該和CORS一起使用。 如果您想提供一個不起作用的簡化版本的代碼 - 可能會更容易分辨出錯。 您可以使用SoundCloud API進行測試,因爲它啓用了CORS ;-) –

0
   **Approach 1** 

如果你看看這個博客帖子:http://eng.netwallet.com/2012/04/17/simple-cross-domain-ajax-with-a-wormhole-5/

在主機頁面上,他們正在使用porthole.js和樹立舷窗windowProxy並監聽來自它的消息灰燼對象。

Porthole.js是一個小型的Javascript庫,它使得它與跨域iFrames進行安全且簡單的通信。

您可以在ember-data和RestAdapter中始終使用此方法來覆蓋所提及的gryzzly等內容。

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

整個代碼:

  **Approach 2** 
在下面的帖子

而且,他們使用的是歌利亞作爲代理與Ember的數據和elasticsearch而是用自己的定製適配器工作做CORS從帖子是這樣的:https://gist.github.com/3369662

相關問題