如何使用dynamodb和serverless在java中创建rest api
作者:API传播员 · 2025-09-10 · 阅读时间:5分钟
本文详细介绍了如何使用AWS DynamoDB和Serverless框架在Java中创建REST API的全过程,包括环境准备、项目初始化、DynamoDB表管理、API处理程序实现以及云端部署。重点讲解了如何通过Serverless框架配置DynamoDB资源和IAM权限,并提供了完整的Java代码示例和部署命令。
文章目录
一. 使用 Java、DynamoDB 与 Serverless 框架创建 REST API:完整教程
本文将详细介绍如何使用 AWS DynamoDB 和 Serverless 框架,在 Java 中创建一个功能完整的 REST API。通过本文,您将学习如何安装工具、创建无服务器项目、管理 DynamoDB 表、实现 API 处理程序,以及最终将服务部署到云端。
二. 安装先决条件
在开始之前,请确保环境中已安装以下工具:
1. 测试 Java 安装
建议使用 Java 17 或 21 LTS:
$ java --version
java 17.0.8 2024-04-17 LTS
Java(TM) SE Runtime Environment (build 17.0.8+10-LTS-194)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+10-LTS-194, mixed mode)
2. 测试 Maven 安装
建议使用 Maven 3.8+:
$ mvn -v
Apache Maven 3.8.8 (f9b9e1a1f9e)
Maven home: /usr/local/apache-maven-3.8.8
Java version: 17, vendor: Oracle Corporation, Java home: /Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "13.6", arch: "x86_64"
3. 安装 Serverless 框架
$ npm install -g serverless
$ serverless --version
Framework Core: 3.x.x
三. 创建无服务器项目
使用 Serverless 框架创建新项目:
$ serverless create --template aws-java-maven --name products-api
生成的项目目录示例:
/Users/username/projects/serverless/apps/products-api
1. 更新项目配置
a. 修改 pom.xml
更新项目名称为 products-api。
b. 修改 serverless.yml
- 指定 Java 版本:
provider:
name: aws
runtime: java17
- 添加 Lambda 函数处理程序及部署配置。
四. 管理 DynamoDB 表
1. 配置 IAM 权限
在 serverless.yml provider 部分添加:
iamRoleStatements:
- Effect: "Allow"
Action:
- "dynamodb:*"
Resource: "*"
2. 定义 DynamoDB 表
resources:
Resources:
ProductsTable:
Type: "AWS::DynamoDB::Table"
Properties:
TableName: "Products"
AttributeDefinitions:
- AttributeName: "id"
AttributeType: "S"
KeySchema:
- AttributeName: "id"
KeyType: "HASH"
BillingMode: "PAY_PER_REQUEST"
五. 实现 DynamoDB 适配器
public class DynamoDBAdapter {
private static volatile DynamoDBAdapter instance;
private final AmazonDynamoDB client;
private final DynamoDBMapper mapper;
private DynamoDBAdapter() {
this.client = AmazonDynamoDBClientBuilder.standard().build();
this.mapper = new DynamoDBMapper(client);
}
public static DynamoDBAdapter getInstance() {
if (instance == null) {
synchronized (DynamoDBAdapter.class) {
if (instance == null) {
instance = new DynamoDBAdapter();
}
}
}
return instance;
}
public DynamoDBMapper getMapper() {
return this.mapper;
}
}
六. 定义产品 POJO
@DynamoDBTable(tableName = "Products")
public class Product {
private String id;
private String name;
private double price;
@DynamoDBHashKey(attributeName = "id")
public String getId() { return id; }
public void setId(String id) { this.id = id; }
@DynamoDBAttribute(attributeName = "name")
public String getName() { return name; }
public void setName(String name) { this.name = name; }
@DynamoDBAttribute(attributeName = "price")
public double getPrice() { return price; }
public void setPrice(double price) { this.price = price; }
}
七. 实现 API 处理程序
1. API 端点
POST /products:创建产品GET /products:获取所有产品GET /products/{id}:根据 ID 获取产品DELETE /products/{id}:根据 ID 删除产品
2. 创建产品 Lambda 处理程序
public class CreateProductHandler implements RequestHandler < Map < String, Object > , ApiGatewayResponse > {
@Override
public ApiGatewayResponse handleRequest(Map < String, Object > input, Context context) {
Product product = new ObjectMapper().convertValue(input.get("body"), Product.class);
DynamoDBAdapter.getInstance().getMapper().save(product);
return ApiGatewayResponse.builder()
.setStatusCode(200)
.setObjectBody(product)
.build();
}
}
其他端点处理程序逻辑类似。
八. 部署服务
1. 构建项目
$ mvn clean install
2. 部署到 AWS
$ serverless deploy
部署成功后,Serverless 会提供完整 API URL,例如:
https://xxxxxx.execute-api.us-east-1.amazonaws.com/dev/products
九. 调用 API 示例
1. 创建产品
$ curl -X POST https://xxxxxx.execute-api.us-east-1.amazonaws.com/dev/products \
-H "Content-Type: application/json" \
-d '{"name":"Product1","price":9.99}'
2. 获取所有产品
$ curl https://xxxxxx.execute-api.us-east-1.amazonaws.com/dev/products
3. 根据 ID 获取产品
$ curl https://xxxxxx.execute-api.us-east-1.amazonaws.com/dev/products/{id}
4. 删除产品
$ curl -X DELETE https://xxxxxx.execute-api.us-east-1.amazonaws.com/dev/products/{id}
十. 总结
本文讲解了如何使用 Java、DynamoDB 与 Serverless 框架 创建一个完整的 REST API。我们从环境配置、项目创建、DynamoDB 管理、Lambda 函数实现到最终部署,逐步展示了实践过程。希望本文对您有所帮助,欢迎在评论区分享问题和反馈。
原文链接: Serverless 官方博客
热门推荐
一个账号试用1000+ API
助力AI无缝链接物理世界 · 无需多次注册
3000+提示词助力AI大模型
和专业工程师共享工作效率翻倍的秘密
热门API
- 1. AI文本生成
- 2. AI图片生成_文生图
- 3. AI图片生成_图生图
- 4. AI图像编辑
- 5. AI视频生成_文生视频
- 6. AI视频生成_图生视频
- 7. AI语音合成_文生语音
- 8. AI文本生成(中国)
最新文章
- GPT-OSS 模型优化成人自考 AI 客服口语评测 API,3 天落地
- Link支付怎么注册?一站式指南
- Meta AI国内怎么用
- 手把手教你用Python调用本地Ollama API
- 2025年提供LLM API的17家顶尖AI公司 – Apidog
- 如何使用 DeepSeek 构建 AI Agent:终极指南
- 如何获取Microsoft API Key 密钥实现bing搜索分步指南
- API和微服务:构筑现代软件架构的基石
- 如何免费调用高德经纬度定位API实现地理定位
- AI 驱动的 API 如何改变招聘:2024 年国内外顶级招聘相关API
- API治理:有效API管理的优秀实践和策略
- 企业 API 安全全解析:责任归属、最佳实践与 Boomi 控制平面管理