2012-12-07 9 views
6

मैं एक node.js प्रॉक्सी सर्वर लिख रहा हूं, विभिन्न डोमेन पर एक एपीआई के अनुरोधों की सेवा कर रहा हूं।प्रतिक्रिया हेडर बदलने और अतिरिक्त अनुरोध डेटा इंजेक्ट करने की क्षमता के साथ Node.js प्रॉक्सी

मैं node-http-proxy का उपयोग करना चाहता हूं और मुझे पहले ही a way to modify response headers मिल गया है।

लेकिन वहाँ शर्त पर अनुरोध डेटा को संशोधित करने के लिए एक रास्ता है (यानी API कुंजी जोड़ना) और ध्यान में रखते हुए कि वहाँ अलग अलग तरीकों अनुरोध हो सकता है - GET, POST, UPDATE, DELETE?

या शायद मैं node-http-proxy के उद्देश्य को गड़बड़ कर रहा हूं और मेरे उद्देश्य के लिए कुछ और उपयुक्त है?

उत्तर

3

एक दृष्टिकोण जो इसे आसान बनाता है, मिडलवेयर का उपयोग करना है।

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); 

अधिक विस्तार है और यह भी दृष्टिकोण पर कुछ सावधानियों के लिए Node-HTTP-Proxy, Middlewares, and You देखें।

+0

स्टीव, धन्यवाद! यह हेडर के संदर्भ में समझ में आता है। क्या एपीआई टोकन जोड़ने जैसे अनुरोध डेटा/बॉडी को ट्वीव करने के लिए कोई समाधान है? – aliona

+0

@aliona मुझे लगता है कि आप इसे अनुरोध के साथ उपरोक्त की तरह संशोधित कर सकते हैं। लेकिन शायद आप हमें बता सकते हैं कि आप जिस एपीआई का उपयोग कर रहे हैं उसमें एपीआई कुंजी प्राप्त की जा सकती है। आम तौर पर मैं उम्मीद करता था कि यह क्वेरीस्ट्रिंग या हेडर में हो। – explunit

+0

एपीआई एपीआई टोकन को अनुरोध विधि 'GET', 'POST',' UPDATE' या' DELETE' – aliona

संबंधित मुद्दे