Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pencegat HTTP
Anda dapat menggunakan pencegat untuk menghubungkan eksekusi permintaan dan tanggapan API. Pencegat adalah mekanisme terbuka di mana SDK memanggil kode yang Anda tulis untuk menyuntikkan perilaku ke dalam siklus hidup permintaan/respons. Dengan cara ini, Anda dapat mengubah permintaan dalam penerbangan, proses permintaan debug, pengecualian tampilan, dan banyak lagi.
Contoh berikut menunjukkan pencegat sederhana yang menambahkan header tambahan ke semua permintaan keluar sebelum loop coba lagi dimasukkan.
class AddHeader( private val key: String, private val value: String ) : HttpInterceptor { override suspend fun modifyBeforeRetryLoop(context: ProtocolRequestInterceptorContext<Any, HttpRequest>): HttpRequest { val httpReqBuilder = context.protocolRequest.toBuilder() httpReqBuilder.headers[key] = value return httpReqBuilder.build() } }
Untuk informasi selengkapnya dan kait intersepsi yang tersedia, lihat Interceptor Interceptor
Pendaftaran pencegat
Anda mendaftarkan pencegat ketika Anda membangun klien layanan atau ketika Anda mengganti konfigurasi untuk serangkaian operasi tertentu.
Interceptor untuk semua operasi klien layanan
Kode berikut menambahkan AddHeader
instance ke properti pencegat pembangun. Penambahan ini menambahkan x-foo-version
header ke semua operasi sebelum loop coba lagi dimasukkan.
val s3 = S3Client.fromEnvironment { interceptors += AddHeader("x-foo-version", "1.0") } // All service operations invoked using 's3' will have the header appended. s3.listBuckets { ... } s3.listObjectsV2 { ... }
Pencegat hanya untuk operasi tertentu
Dengan menggunakan withConfig
ekstensi, Anda dapat mengganti konfigurasi klien layanan untuk satu atau beberapa operasi untuk klien layanan apa pun. Dengan kemampuan ini, Anda dapat mendaftarkan pencegat tambahan untuk subset operasi.
Contoh berikut mengesampingkan konfigurasi s3
instance untuk operasi dalam ekstensi. use
Operasi yang dipanggil s3Scoped
berisi header x-foo-version
dan x-bar-version
header.
// 's3' instance created in the previous code snippet. s3.withConfig { interceptors += AddHeader("x-bar-version", "3.7") }.use { s3Scoped -> // All service operations invoked using 's3Scoped' trigger interceptors // that were registered when the client was created and any added in the // withConfig { ... } extension. }