CLI do Ember com vários proxies
O problema:
Eu tenho um aplicativo Ember CLI que consumirá várias APIs, das quais preciso fazer proxy no modo de desenvolvimento.
Fundo:
Eu tenho uma API herdada que expõe serviços em/api
rodando na minha máquina de desenvolvimento local emlocalhost:3000
Eu tenho uma nova API que expõe serviços em/myapp/api/v1
. Esses serviços foram extraídos recentemente do aplicativo herdado e incluem a maioria dos serviços de aplicativos usados pelo aplicativo brasa.
O aplicativo brasa usa a baseURL de/myapp
, como está sendo implantado em um subdiretório.
Eu gerei dois http-proxys usandoember generate http-proxy
. Eles estão localizados em/server/proxies/api.js
eserver/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' });
});
};
O primeiro proxy, para / api, parece estar funcionando, a segunda API, para / myapp / api / v1 / o que quer que falhe.
Não parece ser usado ou considerado. Quando corro, por exemplo, um POST para myapp / api / v1 / sessions, ele simplesmente diz que não pode POST. Quando coloco o depurador nas funções proxy.on e app.use, elas nunca são atingidas.
Onde estou errado aqui?