配置Ember的后端与RESTful服务进行通信

时间:2015-06-04 18:16:31

标签: web-services rest ember.js ember-data

似乎有很多关于SO的讨论(例如这些问题:ABCD)和其他网站(例如{{ 3}})关于配置Ember以允许跨源请求。这一切都很好,但我宁愿Ember的后端做与远程服务通信的工作(Ember的服务器端组件来发出请求,而不是用户的浏览器)。这记录了吗?有人可以提供一个例子吗?

1 个答案:

答案 0 :(得分:1)

我以为我会发现修改支持hwndChildAfter命令的HTTP服务器很容易。相反,我使用了Ember&CLI的ember serve标志。它允许您使用远程服务来提供数据。

为了实现这一点,我们假设远程服务器--proxy在路径foo.com:3000提供JSON数据。配置控制器以获取数据如下:

/resource

使用这样的模板来调用控制器的动作:

import Ember from 'ember';

function getRemoteResource(store){
  var dfd = Ember.$.Deferred();

  Ember.$.ajax('/resource')
  .done(function(data){
    store.createRecord('model', data);
    dfd.resolve();
  })
  .fail(function(err){
    dfd.reject(new Error("An error occurred getting data.", err));
  });
  return dfd.promise();
}

export default Ember.Controller.extend({
  actions: {
    getResource:function(){
      var dataStore = this.store;
      return getRemoteResource(dataStore);
    }
  }
});

假设您的代码位于主机<h2>Remote data example</h2> <button class="my-button" {{action 'getResource' }}> Get resource </button> 上,请启动以下内容:bar.com。然后,将浏览器打开到加载模板的适当页面(类似于ember serve --proxy http://foo.com:3000),单击按钮并查看是否已加载远程数据。