Ember-cli-mirage没有显示get的任何数据

时间:2015-12-30 21:50:50

标签: ember.js ember-cli-mirage

我正在学习Ember,而我正忙着用ember-cli-mirage制作模拟api。我修改了ember教程中指定的配置文件以及ember-cli-mirage站点,但每次我点击端点时都没有得到任何结果。这是我当前的配置文件

export default function() {
this.get('/api/users', function() {
return {
  users: [
    {id: 1, name: 'Zelda'},
    {id: 2, name: 'Link'},
    {id: 3, name: 'Epona'},
  ]
}
});
}

就像我说的那样,当我去/ api / users时,它只是一个空白页面。我在这里错过了什么吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

首先,安装Ember检查器扩展程序(适用于Chrome或Firefox),然后在浏览器控制台中查看Mirage是否给您一些错误。如果没有写入任何内容,则不会使用您的ember应用程序访问端点。基本上,Mirage会代理您的ember应用程序的所有请求。

所以你需要生成一个用户模型

    ember g model user

并在其中添加name属性。

创建一个路线并在模型钩子中写入

    return this.get('store').findAll('user');

(如果不清楚,请查看quick start tutorial

现在,利用Ember数据,您的应用会请求所有用户点击/users

现在让我们从海市蜃楼开始,制作海市蜃楼模型

    ember g mirage-model user

并按照mirage quickstart,根据您的需要进行调整:)

使用ember s启动您的申请,您应该会看到/users的请求。 如果您想将api放在同一个域中,但使用/api前缀,那么我建议您阅读endpoint path customization

答案 1 :(得分:0)

app/mirage/config.js中,您可以为users设置模拟端点:

export default function() {
  this.get('/users');
  this.post('/users');
  this.put('/users/:id');
  this.del('/users/:id');
}

您可以通过在fixtures中配置app/mirage/fixtures/users.js来设置模拟数据:

export default [
    {id: 1, name: 'Zelda'},
    {id: 2, name: 'Link'},
    {id: 3, name: 'Epona'},
  ];

答案 2 :(得分:0)

Mirage不是真正的服务器,因此您无法直接从浏览器访问API。它是一个存储在JavaScript内存中的模拟服务器,并在您的Ember应用程序启动时实例化。

要测试你的模拟,请让你的Ember应用程序发出API请求,例如

// routes/application.js
export default Ember.Route.extend({
  model() {
    return Ember.$.getJSON('/api/users');
  }
});

如果所有内容都正确连接,您现在应该看到Mirage处理此请求并在控制台中记录响应数据。