Kürzlich, als ich in meinem Projekt einen Node-HTTP-Proxy verwendet habe, habe ich die Notwendigkeit der Änderung des Proxy-Server-Antwortergebnisses gestoßen. Die Bibliothek hat eine Lösung zur Verfügung gestellt, um das Antwortformat an HTML: Harmon zu ändern, und das Rückgabeformat im Projekt ist einheitlich JSON. Es fühlt sich zu sperrig an, um es zu verwenden, also habe ich eine Bibliothek geschrieben, die das JSON -Format analysieren und ändern kann.
In dieser Zeit habe ich auch Probleme gestoßen, auf die ich vorher nicht geachtet hatte: HTTP -Übertragungscodierung und Knotenstrombearbeitung. Hier ist der Implementierungscode:
var zlib = require('zlib');var concatStream = require('concat-stream');/*** Modify the response of json* @param res {Response} The http response* @param contentEncoding {String} The http header content-encoding: gzip/deflate* @param callback {Function} Custom modified logic*/module.exports = function modifyResponse (res, contentencoding, callback) {var unzip, zip; // Jetzt nur mit dem gzip- und Deflat-Inhaltscoding. zlib.inflate (); ZIP = zlib.deflate ();} // Die Cache -Antwortmethode kann nach der Änderung aufgerufen werden. e); _ end.call (res);});} else {console.log ('Nicht unterstütztes Inhalts-kodierender:' + contentCoding); Der Unzip stream.var concatwrite = concatstream (function (data) {var body; try {body = json.parse (data.toString ());} catch (e) {body = data.toString (); console.log ('JSON.PARSE -Fehler:', e); Callback (Körper);} // konvertiert den JSON in Buffer.body = New Buffer (JSON.Stringify (Körper)); // Die Antwortmethode aufrufen und die content-coding.zip.on ('data', function (chunk) {_write.call (res, chunk);}); {_end.call (res);}); Zip.write (Körper); Zip.end ();}); unzip.pipe (Concatwrite);Projektadresse: Node-HTTP-Proxy-Json, jeder ist herzlich eingeladen, Vorschläge auszuprobieren und zu geben, und seien Sie nicht geizig mit Stern.
In der Umsetzung dieser Bibliothek wurde ich immer mehr auf die Bedeutung des theoretischen Wissens bewusst. Die sogenannte Theorie ist der Vorläufer des Handelns. Ich habe zuvor Bibliotheken von Drittanbietern verwendet, und es war mir egal, ob einige Details zugrunde liegen.
Wenn Sie später Zeit haben, müssen Sie sich die zugrunde liegende Implementierung mehr ansehen, da Sie ansonsten stecken bleiben, wenn Sie auf schwierige Probleme stoßen.
Das obige ist der Beispielcode von Node-HTTP-Proxy-Modifikationsergebnis, das Ihnen vom Editor vorgelegt wurde. Ich hoffe, es wird für alle hilfreich sein!