في الآونة الأخيرة ، عندما استخدمت Node-HTTP-Proxy في مشروعي ، واجهت الحاجة إلى تعديل نتيجة استجابة خادم الوكيل. قدمت المكتبة حلاً لتعديل تنسيق الاستجابة لـ HTML: Harmon ، وتنسيق الإرجاع في المشروع JSON بشكل موحد. من الضروري استخدامه ، لذلك كتبت مكتبة يمكنها تحليل وتنسيق JSON.
خلال هذه الفترة ، واجهت أيضًا مشكلات لم أكن قد اهتمت بها من قبل: ترميز نقل HTTP والمعالجة ذات الصلة بتيار العقدة. هنا هو رمز التنفيذ:
var zlib = require ('zlib') ؛ var concatstream = require ('concat-stream') ؛/*** تعديل استجابة json* @param res {response} استجابة http* param contentencoding {string} ModifyResponse (res ، contentencoding ، callback) {var unsip ، zip ؛ // الآن يتعامل فقط مع gzip وانحراف المحتوى- zlib.inflate () ؛ zip = zlib.deflate () ؛} // يمكن استدعاء طريقة استجابة ذاكرة التخزين المؤقت بعد التعديل. e) ؛ _ end.call (res) ؛}) ؛} آخر {console.log ('غير مدعوم ترميز المحتوى:' + contentencoding) ؛ return ؛} // يتم استبدال طريقة إعادة الكتابة بـ unzip breatm.rite.write = function (data) {unzip.write (data) ؛ unsip dream.var concatwrite = concatstream (وظيفة (بيانات) {var body ؛ جرب {body = json.parse (data.toString ()) ؛} catch (e) {body = data.toString () callback (body) ؛} // يحول JSON إلى buffer.body = new buffer (json.stringify (body)) ؛ {الذيعنوان المشروع: Node-HTTP-Proxy-JSON ، الجميع مرحب بهم للتجربة وتقديم الاقتراحات ، ولا يكونون بخيلًا مع Star.
في تنفيذ هذه المكتبة ، أصبحت أكثر وعياً بأهمية المعرفة النظرية. النظرية المزعومة هي رائد العمل. لقد استخدمت مكتبات الطرف الثالث من قبل ، ولم أكن أهتم ببعض التفاصيل الأساسية.
إذا كان لديك وقت لاحقًا ، فيجب أن تنظر إلى التنفيذ الأساسي أكثر ، وإلا فسوف تتعثر عندما تواجه مشاكل صعبة.
ما سبق هو مثال رمز الاستجابة تعديل العقدة HTTP-Proxy التي قدمها لك المحرر. آمل أن يكون ذلك مفيدًا للجميع!