เมื่อเร็ว ๆ นี้เมื่อฉันใช้ Node-HTTP-Proxy ในโครงการของฉันฉันพบว่าจำเป็นต้องแก้ไขผลการตอบกลับของพร็อกซีเซิร์ฟเวอร์ ไลบรารีได้จัดให้มีการแก้ไขรูปแบบการตอบกลับเป็น HTML: Harmon และรูปแบบการส่งคืนในโครงการเป็น JSON อย่างสม่ำเสมอ รู้สึกว่าใหญ่เกินไปที่จะใช้ดังนั้นฉันจึงเขียนห้องสมุดที่สามารถแยกวิเคราะห์และปรับเปลี่ยนรูปแบบ JSON
ในช่วงเวลานี้ฉันยังพบปัญหาที่ฉันไม่เคยให้ความสนใจมาก่อน: การเข้ารหัสการส่งสัญญาณ HTTP และการประมวลผลที่เกี่ยวข้องกับสตรีมของโหนด นี่คือรหัสการใช้งาน:
var zlib = ต้องการ ('zlib'); var concatstream = ต้องการ ('concat-stream');/*** แก้ไขการตอบสนองของ json* @param res {การตอบสนอง} การตอบสนอง http* @param contentencoding {String} http header-endomed modifyResponse (res, contentencoding, callback) {var unzip, zip; // ตอนนี้เฉพาะกับ gzip และ deflate encoding.if (contentencoding === 'gzip') {unzip = zlib.gunzip (); zip = zlib.gzip (); zlib.inflate (); zip = zlib.deflate ();} // วิธีการตอบสนองแคชสามารถเรียกได้หลังจากการปรับเปลี่ยน var _write = res.write; var _end = res.end; if (unzip) {unzip.on ('ข้อผิดพลาด' e); _ end.call (res);});} else {Console.log ('ไม่รองรับการเข้ารหัสเนื้อหา:' + contentEncoding); return;} // วิธีการตอบกลับ rewrite ถูกแทนที่ด้วย unzip stream.res.write = function (data) {unzip.write (data) unzip stream.var concatWrite = concatstream (ฟังก์ชั่น (data) {var body; ลอง {body = json.parse (data.toString ());} catch (e) {body = data.toString () call.log ('json.parse ข้อผิดพลาด:', e) การโทรกลับ (body);} // แปลง json เป็น buffer.body = บัฟเฟอร์ใหม่ (json.stringify (body)); // เรียกวิธีการตอบกลับและกู้คืน content-encoding.zip.on ('data', ฟังก์ชั่น (chunk) {_write.call (res, chunk);}); zip.on (end ') {_end.call (res);}); zip.write (body); zip.end ();}); unzip.pipe (concatwrite);};ที่อยู่โครงการ: Node-HTTP-Proxy-JSON ทุกคนยินดีที่จะลองและให้คำแนะนำและอย่าตระหนี่กับ Star
ในการดำเนินการของห้องสมุดนี้ฉันเริ่มตระหนักถึงความสำคัญของความรู้เชิงทฤษฎีมากขึ้นเรื่อย ๆ ทฤษฎีที่เรียกว่าเป็นผู้เบิกทางของการกระทำ ฉันเคยใช้ห้องสมุดบุคคลที่สามมาก่อนและฉันไม่สนใจรายละเอียดพื้นฐาน
หากคุณมีเวลาในภายหลังคุณต้องดูการใช้งานพื้นฐานมากขึ้นมิฉะนั้นคุณจะติดอยู่เมื่อคุณพบปัญหาที่ยากลำบาก
ข้างต้นเป็นรหัสตัวอย่างของการตอบสนองการปรับเปลี่ยน Node-HTTP-Proxy ผลการตอบสนองที่คุณแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน!