本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
操作、请求和响应变更
在 Java 版 SDK 的 v2.x 中,请求会传递给客户端操作。例如 DynamoDbClient's
PutItemRequest
,传递给DynamoDbClient.putItem
操作。这些操作会返回来自的响应Amazon Web Services 服务,例如PutItemResponse
。
适用于 Java 的 SDK 版本 2.x 与 1.x 相比有以下变化。
-
现在,具有多个响应页面的
Paginator
操作可以自动遍历响应中的所有项目。 -
您不能改变请求和响应。
-
必须使用静态生成器方法而不是构造函数来创建请求和响应。例如,现在
new PutItemRequest().withTableName(...)
PutItemRequest.builder().tableName(...).build()
是 1.x。 -
操作支持创建请求的简短方法:
dynamoDbClient.putItem(request -> request.tableName(...))
.
流式操作
诸如 Amazon S3 getObject
和putObject
方法之类的流操作现在支持非阻塞 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
方法可以将响应加载到内存中并简化常见的内存类型转换。