2016-10-24 6 views
0

Я хочу написать простой прокси, который сохранит тело конкретного запроса POST в файл.Как получить тело запроса с помощью http-proxy?

Я пробовал http-proxy, но проблема в том, что я не знаю, как получить тело запроса. Есть заголовки и другая информация, но нет объекта в объекте req. Вот что я имею в данный момент. Я проверил файл журнала, который я создал, и не вижу там тела запроса.

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

var proxy = httpProxy.createProxyServer({}); 

var logger = function() { 

    return function (request, response) { 
     var logFile = fs.createWriteStream('./req' + new Date().getTime() + '.log'); 
     proxy.web(request, response, {target: 'http://localhost:8081'}); 

     var cache = []; 
     logFile.write(
      JSON.stringify(request, function (key, value) { 
       if (typeof value === 'object' && value !== null) { 
        if (cache.indexOf(value) !== -1) { 
         // Circular reference found, discard key 
         return; 
        } 
        // Store value in our collection 
        cache.push(value); 
       } 
       return value; 
      }, 2) 
     ); 
    } 
}; 

var server = http.createServer(logger()); 
server.listen(8080); 

ответ

1

Обычно, когда я хочу получить доступ к телу запроса с узлом, я использую модуль body-parser.

How to use it !

+0

спасибо. Работает с json, но у меня есть тело xml и похоже, что bodyparser не может его прочитать, даже если я настроюсь на 'raw'. Какие-либо предложения? – Derp

+0

это должно выполнить задание: [body-parser-xml] (https://www.npmjs.com/package/body-parser-xml) – mJehanno

+0

Грустно, что 'body-parser' изменяет исходный запрос, по крайней мере, удаляя тело из Это :\ – Derp

 Смежные вопросы

  • Нет связанных вопросов^_^