AWS HTTP API 提供了一种在 AWS 中部署基于 REST 的 API 的新方法;提供对原始 REST API 的许多简化。
但是,在使用 HTTP API 时,我们需要注意一些问题,例如处理程序参数使用什么类型。 REST API 还用于提供一种启用有效负载压缩的方法。但是对于 HTTP API,我们需要自己压缩有效载荷。
值得庆幸的是,这相对简单,我将在下面解释所需的每个步骤。对于那些寻求快速解决方案的人,我创建了一个库 lambda-compression,您可以按如下方式使用。
用库压缩
lambda-compression 库仅提供一种方法 compress 接受由 HTTP API 传递到处理程序函数的事件变量和“结构化”结果(请参阅格式 2.0 的 Lambda 函数响应)。
compress 函数将返回一个结构化结果,该结果可以作为处理函数的结果返回。
该库可以作为 Node 依赖项安装:
npm i lambda-compressionyarn add lambda-compression
这是一个使用 JavaScript 的示例实现:
import { compress } from 'lambda-compression';export const handler = async (event, context) => { return compress(event, { statusCode: 201, headers: { 'Content-Type': 'application/json', }, body: '{"data":"hello"}', });};
这里是使用 TypeScript 的示例实现:
import { compress } from 'lambda-compression';import { Handler, APIGatewayProxyEventV2, APIGatewayProxyResultV2,} from 'aws-lambda';type ProxyHandler = Handler;export const handler: ProxyHandler = async (event, context) => { return compress(event, { statusCode: 201, headers: { 'Content-Type': 'application/json', }, body: '{"data":"hello"}', });};
压缩所需的步骤
实现压缩所需的逻辑非常简单,因为我们可以依赖 Node.js 中提供的 zlib 包。
在此处查看完整的源代码示例:lambdaCompression.ts
本质上,我们需要:
最后的想法
压缩可能是 CPU 密集型的,因此如果可以预期重复返回相同的结果,则缓存压缩结果可能是谨慎的。也可以将您的 API 放在 CloudFront 分配之后,该分配可以在有限的情况下负责压缩有效负载。最后,恢复使用 REST API 还可以使用内置的压缩功能。
如果您有任何改进图书馆的想法,欢迎提交问题。
关注七爪网,获取更多APP/小程序/网站源码资源!
留言与评论(共有 0 条评论) “” |