HTTP-Interzeptoren - AWS SDK for Kotlin

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

HTTP-Interzeptoren

Sie können Interzeptoren verwenden, um sich an der Ausführung von API-Anfragen und -Antworten zu beteiligen. Interzeptoren sind offene Mechanismen, bei denen das SDK Code aufruft, den Sie schreiben, um Verhalten in den Anforderungs-/Antwort-Lebenszyklus einzufügen. Auf diese Weise können Sie eine In-Flight-Anfrage ändern, die Anforderungsverarbeitung debuggen, Ausnahmen anzeigen und vieles mehr.

Das folgende Beispiel zeigt einen einfachen Interceptor, der allen ausgehenden Anfragen einen zusätzlichen Header hinzufügt, bevor die Wiederholungsschleife aufgerufen wird.

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() } }

Weitere Informationen und die verfügbaren Interception-Hooks finden Sie in der Interceptor-Schnittstelle.

Registrierung des Interceptors

Sie registrieren Interzeptoren, wenn Sie einen Service-Client erstellen oder wenn Sie die Konfiguration für eine bestimmte Gruppe von Operationen überschreiben.

Interceptor für alle Service-Client-Operationen

Der folgende Code fügt der Interceptors-Eigenschaft des Builders eine AddHeader Instanz hinzu. Dieser Zusatz fügt allen Operationen den x-foo-version Header hinzu, bevor die Wiederholungsschleife aufgerufen wird.

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 { ... }

Interceptor nur für bestimmte Operationen

Mithilfe der withConfig Erweiterung können Sie die Service-Client-Konfiguration für einen oder mehrere Operationen für einen beliebigen Service-Client außer Kraft setzen. Mit dieser Funktion können Sie zusätzliche Interzeptoren für eine Teilmenge von Operationen registrieren.

Das folgende Beispiel überschreibt die Konfiguration der s3 Instanz für Operationen innerhalb der Erweiterung. use Die aufgerufenen Operationen s3Scoped enthalten x-foo-version sowohl die als auch die 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. }