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

问题描述 投票:1回答:1

关于SO(例如, ABCD )和其他站点(例如Ember docs ),关于配置Ember以允许跨域请求,似乎有很多讨论。 一切都很好,但是我宁愿让Ember的后端完成与远程服务(Ember的服务器端组件而不是用户的浏览器)之间进行通信的工作。 有记录吗? 有人可以提供例子吗?

web-services rest ember.js ember-data
1个回答
1
投票

我以为可以轻松修改支持ember serve命令的HTTP服务器。 相反,我使用了Ember CLI的--proxy标志。 它允许您使用远程服务来提供数据。

为此,假设远程服务器foo.com:3000/resource路径下提供JSON数据。 配置控制器以获取数据,如下所示:

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>

假设您的代码位于host bar.com ,则像这样启动ember: ember serve --proxy http://foo.com:3000 。 然后,将浏览器打开到相应的页面以加载模板(例如http://bar.com:4200/index ),单击按钮,查看是否已加载远程数据。

© www.soinside.com 2019 - 2024. All rights reserved.