

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Paginasi
<a name="pagination"></a>

Banyak AWS operasi mengembalikan hasil paginasi ketika muatan terlalu besar untuk dikembalikan dalam satu respons. AWS SDK untuk Kotlin Termasuk [ekstensi](https://kotlinlang.org/docs/extensions.html) ke antarmuka klien layanan yang secara otomatis melakukan paginasi hasil untuk Anda. Anda hanya perlu menulis kode yang memproses hasilnya.

Pagination diekspos sebagai [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) <T>sehingga Anda dapat memanfaatkan transformasi idiomatik Kotlin untuk koleksi asinkron (seperti,, dan). `map` `filter` `take` Pengecualian bersifat transparan, yang membuat penanganan kesalahan terasa seperti panggilan API biasa, dan pembatalan mematuhi pembatalan kooperatif umum coroutine. Untuk informasi selengkapnya, lihat [pengecualian [aliran](https://kotlinlang.org/docs/flow.html) dan aliran](https://kotlinlang.org/docs/flow.html#flow-exceptions) di panduan resmi.

**catatan**  
Contoh berikut menggunakan Amazon S3. Namun, konsepnya sama untuk layanan apa pun yang memiliki satu atau lebih paginasi APIs. Semua ekstensi pagination didefinisikan dalam `aws.sdk.kotlin.services.<service>.paginators` paket (seperti`aws.sdk.kotlin.services.dynamodb.paginators`). 

Contoh kode berikut menunjukkan bagaimana Anda dapat memproses respons paginasi dari panggilan fungsi [ListObjectSV2Paginated](https://docs.aws.amazon.com/sdk-for-kotlin/api/latest/s3/aws.sdk.kotlin.services.s3.paginators/list-objects-v2-paginated.html). 

**Impor**

```
import aws.sdk.kotlin.services.s3.S3Client
import aws.sdk.kotlin.services.s3.paginators.listObjectsV2Paginated
import kotlinx.coroutines.flow.*
```

**Kode**

```
val s3 = S3Client.fromEnvironment()
val req = ListObjectsV2Request {
    bucket = "amzn-s3-demo-bucket"
    maxKeys = 1
}

s3.listObjectsV2Paginated(req)  // Flow<ListObjectsV2Response>
    .transform { it.contents?.forEach { obj -> emit(obj) } }
    .collect { obj ->
        println("key: ${obj.key}; size: ${obj.size}")
    }
```