内容提要
本文介绍了如何使用PlanetScale无服务器驱动与AWS Lambda函数构建无服务器API。首先,创建PlanetScale数据库并添加数据;然后,设置Lambda函数,上传代码并配置环境变量;接着,使用API Gateway构建支持GET、POST、PUT和DELETE请求的API,处理酒店数据;最后,测试API以确保其功能正常。
延伸解读
无服务器驱动的适用场景与限制
PlanetScale无服务器驱动通过HTTP连接数据库,解决了某些云提供商屏蔽TCP的问题。但文章指出该驱动目前处于测试阶段,需在数据库设置中手动启用。启用后,新建的密码会使用不同的主机名,专门用于HTTP访问。这意味着现有密码可能无法直接用于无服务器驱动,需要重新生成。此外,驱动仅支持JavaScript,且需配合node-fetch使用。
Lambda函数部署与配置要点
在AWS Lambda中使用该驱动时,需将代码打包为zip上传,并设置环境变量DATABASE_HOST、DATABASE_USERNAME和DATABASE_PASSWORD。这些变量来自PlanetScale连接模态框中的.env信息。函数运行时选择Node.js 16.x。测试时需配置测试事件,运行后可查看结果。注意,每次更新代码后都需重新打包上传,且环境变量需与PlanetScale中新建的密码对应。
API Gateway路由与HTTP方法映射
文章通过API Gateway将HTTP方法映射到数据库操作:GET对应SELECT,POST对应INSERT,PUT对应UPDATE,DELETE对应DELETE。对于PUT和DELETE,需在API Gateway中创建/hotels/{id}路由,以便从路径参数中获取记录ID。Lambda函数中使用switch语句根据event.requestContext.http.method分发请求。注意,JavaScript中不能使用delete作为函数名,因此删除操作使用del。
测试与验证流程
使用VS Code的REST Client插件,通过tests.http文件发送请求测试API。GET请求返回酒店数组,POST请求返回新记录的ID。PUT和DELETE请求需在URL中指定ID,成功时返回200状态码。测试后可在PlanetScale控制台运行SELECT * FROM hotels验证数据变化。注意,PUT请求需提供完整的记录字段,因为UPDATE语句会覆盖所有指定字段。
Q&A
如何在PlanetScale上创建数据库并添加数据?
在PlanetScale上创建一个名为travel_api的新数据库,并通过SQL语句创建表和插入酒店数据。
如何设置AWS Lambda函数以使用PlanetScale数据库?
创建一个空文件夹,初始化项目并安装必要的包,然后上传代码并配置环境变量到AWS Lambda。
如何使用API Gateway构建支持不同HTTP请求的API?
使用API Gateway创建API,配置路由以支持GET、POST、PUT和DELETE请求,并将其与Lambda函数集成。
如何测试在AWS Lambda中创建的API?
在VS Code中使用Rest Client插件创建测试文件,发送GET和POST请求以验证API功能。
如何处理API中的PUT和DELETE请求?
在Lambda函数中添加处理PUT和DELETE请求的逻辑,并在API Gateway中配置相应的路由。
PlanetScale的无服务器驱动有什么特点?
PlanetScale的无服务器驱动允许通过HTTP访问数据库,适用于某些云提供商的限制环境。