前言
AWS Lambda 在 JavaScript 语言中运行的时候不能直接返回 HTTP 响应,这常常会成为前端技术开发中的一大瓶颈。为了解决这个问题,需要用到外部依赖。
@wmakeev/lambda-node-standard-http-response 是一款专门为 AWS Lambda 设计的 Node.js 包,能够以标准的 HTTP 响应返回格式将请求结果传递到 HTTP API 网关。
本篇文章主要介绍如何使用 @wmakeev/lambda-node-standard-http-response
安装
在命令行运行以下命令即可安装 @wmakeev/lambda-node-standard-http-response:
npm install @wmakeev/lambda-node-standard-http-response
基本用法
在您的 Lambda 函数中,您需要声明以下的处理函数。
exports.handler = async (event, context) => { const response = new StandardHttpLambdaResponse(); response.setBody('Hello world!'); response.setStatusCode(200); return response.getResponse(); }
这里,我们在 Lambda 函数中使用 StandardHttpLambdaResponse
class 来解决响应问题。该类提供了一组明确的 API 用来声明消息和状态,以确保 Lambda 函数装配结果时,HTTP 响应(或HTTP代理请求)能够被正确解析。最终我们利用类方法 getResponse
, 将处理结果返回到API网关。
方法
setHeaders
通过传递一个 header 对象,可以设置 HTTP 响应头。代码如下:
response.setHeaders({ 'Access-Control-Allow-Origin': '*', });
setStatusCode
使用 HTTP 状态代码规定返回值状态。代码如下:
response.setStatusCode(200);
setBody
设置 HTTP 响应体的内容。注意,setBody
只接收一个参数,您需要在构建结果或调用的时候将其转换成 JSON 格式的文本。代码如下:
response.setBody(JSON.stringify({ message: 'Hello, world!', }));
getResponse
返回 Standard HTTP Lambda Response 格式的处理结果,以便 AWS Lambda 可以将响应传递回 HTTP API 网关。
-- -------------------- ---- ------- --------------- - ----- ------- -------- -- - ----- -------- - --- ----------------------------- --------------------- ------------------------------ ---- --- --------------------------------- -------- ------- -------- ---- ---------------------------- ------ ----------------------- -
示例
以下是简单的示例:
-- -------------------- ---- ------- ----- -------------------------- - ------------------------------------------------------- --------------- - ----- ------- -------- --- ----- -------- - --- ----------------------------- --------------------- ------------------------------ ---- --- --------------------------------- -------- ------- -------- ---- ---------------------------- ------ ----------------------- -
这个示例将设置 HTTP 响应中允许的 Headers,设置返回代码为 200 并设置 HTTP 响应体内容。
尝试运行这个 Lambda 函数,并在请求中得到 HTTP 响应:
-- -------------------- ---- ------- ------ --- ------------- ------------------------------ ----------------- ------------------------------------ --------------- ---------------- ---------------------------- - ----- ---- -- --- ---- -------- --- ----- --------------- ----------------- ---- ------- ---------- --------------- -- ------------------ --------
结论
这里文章记录了如何给 Lambda 返回 HTTP 响应。我们使用了 @wmakeev/lambda-node-standard-http-response 这个 npm 包,这个包能够以标准的 HTTP 响应返回格式将请求结果传递到 HTTP API 网关。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005671f81e8991b448e3878