如何使用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密钥——什么是API Key 密钥?
- 华为 UCM 推理技术加持:2025 工业设备秒级监控高并发 API 零门槛实战
- 使用JSON注入攻击API
- 思维链提示工程实战:如何通过API构建复杂推理的AI提示词系统
- 短信验证码API在Java、Python、PHP中的使用指南
- 免费使用头条热榜API进行数据分析的教程
- 获取 YouTube API Key 密钥的教程与示例
- Python人工智能学习路线(长篇干货)
- 当中医遇上AI:探索“寻艾中医AI开放平台”的创新之旅
- 增值税发票OCR识别API在Java、Python、PHP中的使用教程
- 创建调用系统API的ChatGPT代理 – ServiceStack
- 逐步指南:如何创建一个API – Kodezi博客