如何使用新的ember-cli http-mock进行API调用

时间:2014-08-28 13:21:41

标签: api ember.js ember-data ember-cli

我有一个简单的(目前为止)ember-cli项目,现在只有一个带有FIXTURE数据的模型。我想使用实际的JSON文件或http-mock来模拟API内容,这是以前的api-stub的ember-cli版本41的名称。

我对这一切都很陌生,所以我真的不知道如何弄清楚我发现人们能够api-stub工作的信息,而且它并没有。看起来ember-cli上的所有文档都已使用http-mock信息进行了更新。

我做过ember generate http-mock project,但我不确定该怎么做。

这是我当前的app / router.js:

Router.map(function() {
  this.resource('projects', { path: '/' });
  this.resource('project', {path: '/project/:project_id'}, function(){
    this.resource('milestones');
    this.resource('team');
    this.resource('budget');
  });
});

所以我有一个模板用于我的所有项目,并希望深入到一个,这需要能够与嵌套路由相关联。 我的理想就像GitHub API,你可以从用户深入到一个回购,再到那个回购的问题等等。

同样,我仍然在学习ember和ember-cli的方法,所以解释了为什么"以及"如何"非常感谢。

1 个答案:

答案 0 :(得分:22)

我也是ember / ember-cli的新手,但我有一个简单的http-mock原型。生成http-mock项目后:

>ember g http-mock project

生成器应该创建一个服务器'你的项目中的文件夹与你的project.js模拟在'模拟'子目录。如果你打开那个文件(server / mocks / project.js),你应该看到这样的东西:

module.exports = function(app) {
  var express = require('express');
  var projectRouter = express.Router();
  projectRouter.get('/', function(req, res) {
    res.send({project:[]});
  });
  app.use('/api/project', projectRouter);
};

您希望使用您的api应该响应的json更新res.send(...)。例如:

res.send({project:{id: 1, number: 123, name: 'Fooshnickins'}});

您可以通过运行服务器向自己证明这一点:

>ember server

卷曲你的api(注意内容类型):

>curl -H "ContentType:application/json" http://localhost:4200/api/project

应该回复:

{project:{id: 1, number: 123, name: 'Fooshnickins'}}