2014-08-28 37 views
13

我有一個簡單的(到目前爲止)ember-cli項目,現在只需要一個帶有FIXTURE數據的模型。我想模擬API的東西,無論是與實際的JSON文件,或http-mock,這是以前是api-stub的名稱。如何使用新的ember-cli http-mock API調用

我對這一切都很陌生,所以我真的不知道該怎麼做我發現的信息,在那裏人們能夠得到api-stub工作,並且它看起來不像ember-cli上的任何文檔都有已更新爲http-mock信息。

我做了ember generate http-mock project但我不確定該從這裏做些什麼。

這裏是我當前的應用程序/ 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一樣,你可以從用戶追溯到回購,回購問題等。

再次,我仍然學習我的方式周圍的燼和燼,非常感謝「爲什麼」以及「如何」的解釋。

+0

我仍然在想這個但有一些信息[在這個答案](http://stackoverflow.com/questions/22586703/how-do-i-setup-the-api-stub-in-an-ember-cli-app)可能有幫助您。 – 2014-09-02 04:21:38

回答

22

我對ember/ember-cli也很新,但是我得到了一個簡單的http-mock原型。

>ember g http-mock project 

發電機應該創建你的項目中的「服務器」文件夾中的「嘲笑」子目錄您project.js模擬:產生你的HTTP的模擬項目後。如果你打開該文件(服務器/嘲笑/ 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); 
}; 

你想用你的JSON API應該更新res.send(...)迴應。例如:

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

你能證明自己這部作品通過運行服務器:

>ember server 

而且curl'ing您的API(注意,內容類型):

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

應該響應與:

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

太棒了,謝謝。這確實有效。然後,當我最終想要使用實際的API時,你知道我應該做什麼嗎?我是否只需從package.json中刪除''APIMethod「:」stub「',然後將主機添加到RESTAdapter? – redOctober13 2014-09-04 14:30:53

+0

您不再需要package.json中的「APIMethod:stub」設置。如果你的API是「完全實現的」,你可以添加主機到適配器,但如果你想使用一些模擬和一些你的API,我的意圖是使用http-proxy。不過,我認爲它還沒有按照預期工作。我相信你應該能夠「http:// localhost:3000」http:// localhost:3000「並且它應該代理任何localhost:4200/projects請求到localhost:3000/projects,但它當前代理到localhost:3000 /(忽略代理目標上的路徑)。 – GOULETGOULET 2014-09-04 20:25:36

+0

剛剛與irc上的tstirrat聊天。他爲http代理藍圖生成的0.41版代理代碼提供了[簡單修復](https://gist.github.com/tstirrat/7369faef52f6858caa86)。它將路徑添加回請求url,然後將其添加到代理目標。您不能僅將路徑添加到目標,因爲它會被代理實現(當前爲node-http-proxy)所取代。 – GOULETGOULET 2014-09-04 21:32:00