操作、请求和响应变更 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

操作、请求和响应变更

在 Java 版 SDK 的 v2.x 中,请求会传递给客户端操作。例如 DynamoDbClient'sPutItemRequest,传递给DynamoDbClient.putItem操作。这些操作会返回来自的响应Amazon Web Service,例如PutItemResponse

适用于 Java 的 SDK 版本 2.x 与 1.x 相比有以下变化。

  • 现在,具有多个响应页面的Paginator操作可以自动遍历响应中的所有项目。

  • 您不能改变请求和响应。

  • 必须使用静态生成器方法而不是构造函数来创建请求和响应。例如,现在new PutItemRequest().withTableName(...)PutItemRequest.builder().tableName(...).build()是 1.x。

  • 操作支持创建请求的简短方法:dynamoDbClient.putItem(request -> request.tableName(...)).

流式操作

诸如 Amazon S3 getObjectputObject方法之类的流操作现在支持非阻塞 I/O。因此,请求和响应 POJO 不再将InputStream作为参数。相反,对于同步请求RequestBody,请求对象接受的是字节流。异步等效项接受AsyncRequestBody

例 1.x 中的 Amazon S3 putObject 操作
s3client.putObject(BUCKET, KEY, new File(file_path));
例 2.x 中的 Amazon S3 putObject 操作
s3client.putObject(PutObjectRequest.builder() .bucket(BUCKET) .key(KEY) .build(), RequestBody.of(Paths.get("myfile.in")));

并行地,ResponseTransformer对于同步客户端,流式响应对象接受 a,AsyncResponseTransformer为异步客户端接受 a。

例 1.x 中的 Amazon S3 getObject 操作
S3Object o = s3.getObject(bucket, key); S3ObjectInputStream s3is = o.getObjectContent(); FileOutputStream fos = new FileOutputStream(new File(key));
例 2.x 中的 Amazon S3 getObject 操作
s3client.getObject(GetObjectRequest.builder().bucket(bucket).key(key).build(), ResponseTransformer.toFile(Paths.get("key")));

在 Java SDK for Java 2.x 中,流式响应操作有一种AsBytes方法可以将响应加载到内存中并简化常见的内存类型转换。