2015-05-15 17 views
8

Das Problem:Ember CLI mit mehreren Proxies

ich eine Ember CLI-Anwendung, die mehr APIs verbrauchen, die ich in dem Modus in der Entwicklung Proxy benötigen.

Hintergrund:

ich ein Vermächtnis api haben die

bei localhost:3000 Dienste bei /api läuft auf meinem lokalen Entwicklungsmaschine macht

Ich habe eine neue api, die Dienstleistungen bei /myapp/api/v1 aussetzt. Diese Dienste wurden kürzlich aus der Legacy-App extrahiert und umfassen die Mehrzahl der Anwendungsdienste, die von der Ember-App verwendet werden.

Die Ember-App verwendet die baseURL von /myapp, da sie in einem Unterverzeichnis bereitgestellt wird.

Ich erzeugte zwei http-proxys unter Verwendung ember generate http-proxy. Sie befinden sich an /server/proxies/api.js und 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' }); 
    }); 
}; 

MeineAnw/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' }); 
    }); 
}; 

der erste Proxy, zu/api, scheint zu funktionieren, wobei die zweite API, nach/myapp/api/v1/was auch immer scheitert.

Es scheint nicht verwendet oder in Betracht gezogen zu werden. Wenn ich zum Beispiel einen POST zu myapp/api/v1/sessions ausführe, heißt es einfach nicht POST. Wenn ich den Debugger auf die Funktionen proxy.on und app.use setze, werden sie nie getroffen.

Wohin gehe ich hier falsch?

Antwort

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

Sie eine / am Anfang der Zeichenfolge fehlt;)

+1

FYI, ich habe die Prämie nicht veröffentlichen, so dass es dann sein, bis es auf die Vergabe @Asherlc :) – DVG