我正在学习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时,它只是一个空白页面。我在这里错过了什么吗?
谢谢!
答案 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处理此请求并在控制台中记录响应数据。