2012-12-07 16 views
6

Piszę serwer proxy node.js, obsługujący żądania do interfejsu API w innej domenie.Serwer proxy Node.js z możliwością zmiany nagłówków odpowiedzi i wprowadzania dodatkowych danych żądania

Chciałbym użyć node-http-proxy i już znalazłem a way to modify response headers.

Ale czy jest jakiś sposób, aby zmodyfikować dane żądanie w stanie (czyli dodawanie klucza API) oraz biorąc pod uwagę, że mogą być różne metody prośba - GET, POST, UPDATE, DELETE?

A może wprowadzam w błąd cel node-http-proxy i jest coś bardziej odpowiedniego do mojego celu?

Odpowiedz

3

Jednym podejściem, które sprawia, że ​​jest całkiem proste, jest użycie oprogramowania pośredniego.

var http = require('http'), 
    httpProxy = require('http-proxy'); 

var apiKeyMiddleware = function (apiKey) { 
    return function (request, response, next) { 
    // Here you check something about the request. Silly example: 
    if (request.headers['content-type'] === 'application/x-www-form-urlencoded') { 
     // and now you can add things to the headers, querystring, etc. 
     request.headers.apiKey = apiKey; 
    } 
    next(); 
    }; 
}; 

// use 'abc123' for API key middleware 
// listen on port 8000 
// forward the requests to 192.168.0.12 on port 3000 
httpProxy.createServer(apiKeyMiddleware('abc123'), 3000, '192.168.0.12').listen(8000); 

Zobacz Node-HTTP-Proxy, Middlewares, and You więcej szczegółów, a także niektóre przestróg dotyczących podejścia.

+0

Steve, dzięki! To ma sens w kategoriach nagłówków. Czy istnieją jakieś rozwiązania dotyczące dostosowywania danych/treści żądania, takie jak dodanie tokena API? – aliona

+0

@aliona Wydaje mi się, że możesz zmodyfikować go podobnie jak powyżej za pomocą request.body, ale być może możesz nam powiedzieć, w jaki sposób klucz API ma zostać odebrany z interfejsu API, którego używasz. Ogólnie rzecz biorąc, oczekiwałbym, że będzie to albo w postaci zapytania lub nagłówków. – explunit

+0

API oczekuje, że token APi będzie obecny w zapytaniu lub treści zapytania, w zależności od metody żądania 'GET',' POST', 'UPDATE' lub' DELETE' – aliona

Powiązane problemy