2014-08-28 44 views
13

Basit (şimdiye kadar) bir ember-cli projem var ve şu anda sadece bir tane FIXTURE verisi var. API öğelerini gerçek JSON dosyalarıyla veya http-mock ile eşlemek istiyorum. Bu, api-stub olarak kullanılan ember-cli sürüm 41 adıdır.API çağrıları için yeni ember-cli http-mock nasıl kullanılır

Tüm bu oldukça yeniyim, bu yüzden gerçekten insanlar api-stub çalışma almak başardık buldum bilgi yapmaya bilmiyordum ve o var ember-cli herhangi dokümanlar gibi görünmüyor http-mock info ile güncellendi.

ember generate http-mock project yaptım ama gerçekten burada ne yapacağımı emin değilim.

İşte benim geçerli uygulama/router.js var:

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

Yani ben bütün projeleri için bir şablon var ve iç içe yollarına ilişkilendirmek gerekiyor birine detaya istiyorum. Benim İdeal vb Yine

o repo konulara bir repoya bir kullanıcıdan daha ayrıntılı hale getirerek GitHub API gibi bir şey olurdu, ben hala çok, köz ve kor-cli yolumu öğreniyorum "Neden" in yanı sıra "nasıl" nın açıklamaları büyük ölçüde takdir edilmektedir.

+0

Hala bunu çözüyorum ama yardımcı olabilecek bazı bilgiler var [bu cevapta] (http://stackoverflow.com/questions/22586703/how-do-i-setup-the-api-stub-in-an-ember-cli-app) sen. –

cevap

22

Ember/ember-cli'da da oldukça yeniyim ama basit bir http-mock prototip çalışmam var. jeneratör 'dalga geçen' alt dizininde sizin project.js taklidinin ile proje içinde bir 'sunucu' klasörünü oluşturmuş olmalısınız

>ember g http-mock project 

: En http-sahte projesini oluşturduktan sonra.

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); 
}; 

Sen API gerekir json ile res.send (...) güncelleştirmek istersiniz: Eğer (sunucu/mocks/project.js) bu dosyayı açarsanız böyle bir şey görmelisiniz lle cevap ver. örneğin:

>ember server 

Ve api (içerik türünü unutmayın) curl'ing:

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

yanıt verirse

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

Kendine kanıtlayabilirim bu sunucu çalıştırarak çalışır ile:

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

Harika, teşekkürler. Bu işe yarıyor. Ve sonra, sonunda gerçek bir API kullanmak istediğimde ne yapmam gerektiğini biliyor musun? Package.json'dan "APIMethod": "stub" 'i kaldırıp daha sonra RESTAdapter'e ev sahibi ekledim mi? – redOctober13

+0

Artık package.json'daki "APIMethod: stub" ayarına ihtiyacınız yok. Eğer api'niz "tam olarak uygulanmış" ise, konakçıyı bağdaştırıcıya ekleyebilirsiniz, ancak bazı alaylarla ve API'nizin bir kısmını kullanmak istiyorsanız, (inanıyorum), http-proxy'yi kullanmaktır. Ancak henüz tasarlandığı gibi çalışmıyorum. "> Http: // localhost: 3000 ember g http-proxy projelerini yapabilmeniz ve herhangi bir localhost'u proxy yapabilmeniz gerektiğine inanıyorum: 4200/proje localhost'a istekleri: 3000/projeler ancak şu anda localhost'a proxy: 3000/(vekil hedefindeki yolu görmezden gelerek). – GOULETGOULET

+0

Sadece tstirrat on irc ile sohbet ettik.Http-proxy planının oluşturduğu proxy kodunun 0.41 sürümü için [bu basit düzeltme] 'yi (https://gist.github.com/tstirrat/7369faef52f6858caa86) sağladı. Daha sonra proxy hedefine eklenen istek URL'sine giden yolu ekler. Vekil uygulama (şu anda node-http-proxy) tarafından sıkıştırıldığı için hedefe yalnızca yol ekleyemezsiniz. – GOULETGOULET

İlgili konular