2015-05-15 14 views
8

il problema:Ember CLI con i proxy multipli

Ho un'applicazione Ember CLI che consumerà più API, che ho bisogno di proxy per in modalità di sviluppo.

Background:

Ho un vecchie API che espone servizi a /api in esecuzione sulla mia macchina di sviluppo locale a localhost:3000

Ho una nuova API che espone servizi a /myapp/api/v1. Questi servizi sono stati recentemente estratti dall'app legacy e comprendono la maggior parte dei servizi applicativi utilizzati dall'app ember.

L'app embra utilizza il numero di base /myapp, poiché viene distribuito in una sottodirectory.

Ho generato due http-proxy con ember generate http-proxy. Sono situate a /server/proxies/api.js e server/proxies/myapp/api/v1.js

api.js

var proxyPath = '/api'; 
module.exports = function(app) { 
    var proxy = require('http-proxy').createProxyServer({}); 
    proxy.on('error', function(err, req) { 
    console.error(err, req.url); 
    }); 
    app.use(proxyPath, function(req, res, next){ 
    // include root path in proxied request 
    req.url = proxyPath + '/' + req.url; 
    proxy.web(req, res, { target: 'http://localhost:3000' }); 
    }); 
}; 

myapp/api/v1.js

var proxyPath = 'myapp/api/v1'; 
module.exports = function(app) { 
    var proxy = require('http-proxy').createProxyServer({}); 
    proxy.on('error', function(err, req) { 
    console.error(err, req.url); 
    }); 
    app.use(proxyPath, function(req, res, next){ 
    req.url = proxyPath + '/' + req.url; 
    proxy.web(req, res, { target: 'http://localhost:4100' }); 
    }); 
}; 

Il primo proxy, a/api, sembra funzionare, la seconda API, to/myapp/api/v1/tutto ciò che non riesce.

Non sembra essere utilizzato o considerato. Quando corro, ad esempio un POST a myapp/api/v1/sessions, dice solo che non può POST. Quando metto il debugger sulle funzioni proxy.on e app.use, non vengono mai colpiti.

Dove sto andando storto qui?

risposta

6
var proxyPath = 'myapp/api/v1'; 

Stai manca un / all'inizio della stringa;)

+1

FYI, non ho postato la generosità, così sarà fino a @Asherlc a aggiudicarlo :) – DVG