Node.js 如何使用AWS Lambda获取网页并返回正文和标题
我试图使用Lambda函数获取网页,然后返回内容和响应标题。下面是我的代码,当网关API触发时总是返回“Internal server error”(内部服务器错误),我对如何构造Node.js 如何使用AWS Lambda获取网页并返回正文和标题,node.js,aws-lambda,node-fetch,Node.js,Aws Lambda,Node Fetch,我试图使用Lambda函数获取网页,然后返回内容和响应标题。下面是我的代码,当网关API触发时总是返回“Internal server error”(内部服务器错误),我对如何构造响应对象感到困惑,它似乎没有任何关于它的文档。任何打击都是高度赞赏的 const fetch = require('node-fetch'); exports.handler = async (event) => { // TODO implement let r = await fetch('
响应
对象感到困惑,它似乎没有任何关于它的文档。任何打击都是高度赞赏的
const fetch = require('node-fetch');
exports.handler = async (event) => {
// TODO implement
let r = await fetch('http://www.google.com');
let buffer = await r.buffer();
const response = {
statusCode: r.status,
body: buffer,
header: r.headers
};
return response;
};
我相信您的问题在于您使用的是
response.buffer()
方法。这里应该使用response.text()
方法。它将以纯文本形式返回响应正文。由于您从响应中获得的标题已经包含内容类型:text/html
标题,因此您应该能够返回html文档。感谢您的帮助。将其更改为text()会返回HTML文档,但我的意思是返回的内容类型不仅限于text/HTML。我发现行header:r.headers
有问题,因为返回的响应不包括从提取返回的任何头。好的,我明白了。可能是从response.headers
返回的头值是数组。如果您只需要内容类型
标题,您可以使用response.headers.get(“content type”)
。那么,经过进一步测试,我似乎无法将buffer
作为body
的值,每当我这样做时,它都会返回内部服务器错误,不知您是否也知道原因。谢谢我自己发现的,似乎我必须返回字符串,但可以命令API网关将数据视为二进制: