Где я должен поставить обратный вызов для возврата данных после вызова узла https.request?
Я пытаюсь прочитать содержимое запроса, используя узел http
родная библиотека
Я хочу сделать запрос POST, который я уже успешно выполняю, но затем использую сохраненные фрагменты ответа, чтобы вывести их целиком, используя обратный вызов в моей лямбда-функции.
Это мой код:
getData: function (event, context, callback) {
let inputData = event.body;
let requestData = Object.assign({}, inputData);
var dataRequest = 'field='+ requestData.Field1;
var options = {
method: 'POST',
hostname: 'my.hostname.com',
path: '/',
headers: {
"content-type": "application/x-www-form-urlencoded",
"connection" : "keep-alive",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36",
}
};
var dataStr = "";
var req = https.request(options, function (response) {
response.on('data', (chunk) => {dataStr += chunk;});
response.on('end', () => {
console.log(response.statusCode + " " + dataStr);
//(*) causes "hang up socket error"
return callback(dataStr);
});
});
req.on('error', err => {
return callback("request error:" + err);
})
req.write(dataRequest);
req.end(); //maybe req.end(callback(null,dataStr))?;
//on commented (*) works fine but dataStr string comes empty
callback(null,dataStr);
}
Где я могу поставить обратный вызов для вывода dataStr
переменное содержимое как ответ этой конечной точки?
Спасибо за понимание.
1 ответ
Для вашего кода правильно поместить метод обратного вызова в обратный вызов "end" и "error", который уже существует. Удалите обратный вызов из конца вашего кода.
Вы можете сохранить обратный вызов в любом месте вашего кода, но если вы хотите вернуть данные, тогда в этом случае лучше сохранить внутренний обратный вызов этой функции.
Еще одна вещь, обратный вызов не завершит выполнение вашего кода, пока вы не вернетесь к основному обработчику