2017-12-18 186 views
5

Używam ekspresu, w którym wyśmiewałem wywołania interfejsu API dla mojej aplikacji.Wywoływanie funkcji API Express proxy za pomocą plików cookie

Czy istnieje serwer pośredniczący, którego mogę użyć do przekierowania wywołań na mój serwer dev?

poniżej jest mój przykładowy kod ekspresowej

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var cors = require('cors'); 


app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.static(path.join(__dirname, 'dist'))); 

app.get('/brand', function(req,res){ 
    res.send({"brand":"Cadillac","origin":"USA"}); 
}); 

Kiedy uruchomić mój wniosek w lokalnej API z mojego kodu „http://localhost:3000/brand” należy przekierować do „http://www-dev.abc.com/brand

przed przekierowaniem również trzeba ustawić cookie, ponieważ interfejs API podaje dane tylko wtedy, gdy istnieje ważny plik cookie.

Czy istnieje serwer proxy, z którego można korzystać? Czy możesz podać jakieś przykłady?

Odpowiedz

1

Jeśli rozumiem cię, wtedy twoje wymagania lista wygląda następująco:

  1. Prosta integracja z express.
  2. Proxy tylko jeden punkt końcowy.
  3. Proxy tylko w lokalnym środowisku.
  4. Możliwość ustawienia plików cookie dla żądań proxy.

Kod Przykład:

var express = require('express'); 
var app = express(); 
var path = require('path'); 
var proxy = require('express-http-proxy'); 

app.use(express.static(path.join(__dirname, 'public'))); 
app.use(express.static(path.join(__dirname, 'dist'))); 

if (process.env.NODE_ENV === 'production') { 
    app.get('/brand', function(req,res){ 
    res.send({"brand":"Cadillac","origin":"USA"}); 
    }); 
} else { 
    app.use('/brand', proxy('http://www-dev.abc.com/brand', { 
    proxyReqOptDecorator: function(proxyReqOpts, srcReq) { 
     proxyReqOpts.headers['cookie'] = 'cookie-string'; 
     return proxyReqOpts; 
    } 
    })); 
} 

app.listen(8000); 

Komentarze:

  • Do sprawdzania typ środowiska użyłem budowę process.env.NODE_ENV === 'production'
  • Najlepszy pakiet dla Twoich potrzeb jest express-http-proxy, ale jeśli będziesz musiał proxy wielu punkty końcowe, będzie to boleśnie. Sprawdź w tym przypadku http-proxy.
+0

W Express-http-proxy w jaki sposób mogę przekazywać parametry ciągu zapytania z klienta, aby wyrazić serwer? – user804401

+0

Ta funkcja jest dostępna w pudełku. – galkin