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