exports.handler = async (event) => {
// TODO implement
const https = require('https');
https.get('https://reqres.in/api/users',
res => {
//console.log(res.statusCode);
//console.log(res.headers);
let body = '';
res.on('data',data =>{
body += data;
})
res.on('end',()=>console.log(body));
})
const response = {
statusCode: 200,
body: JSON.stringify(https.get),
};
return response;
};
我遇到了一个错误,看来我无法从todo函数获得输出,因此我尝试了response函数,但它仍然会产生错误。
答案 0 :(得分:0)
您可以使用回调函数:
exports.handler = (event, callback) => {
const https = require('https');
https.get('https://reqres.in/api/users',
res => {
let body = '';
res.on('data', data => {
body += data;
});
res.on('end', function() {
const response = {
statusCode: 200,
body: JSON.stringify(body),
};
callback(response)
});
});
};
this.handler(null, (res) => console.log(res));
触发end
时将调用回调。
答案 1 :(得分:0)
我喜欢诺言方式,解决promise
on end
事件,拒绝诺言on error
事件。
exports.handler = async (event) => {
const https = require('https');
try {
const responseBody = await new Promise((resolve, reject) => {
https.get('https://reqres.in/api/users',
res => {
//console.log(res.statusCode);
//console.log(res.headers);
let body = '';
res.on('data', data => {
body += data;
})
res.on('error', (err) => reject(err));
res.on('end', () => resolve(body));
})
});
const response = {
statusCode: 200,
body: JSON.stringify(responseBody),
};
return response;
} catch(err) {
const errorResponse = {
statusCode: 400,
body: JSON.stringify({ message: err.message }),
};
return errorResponse;
}
}