Inhaltstypkonvertierungen in API Gateway - Amazon API Gateway

Inhaltstypkonvertierungen in API Gateway

Die Kombination aus den binaryMediaTypes Ihrer API, den Headern in Client-Anfragen und der Integrations-contentHandling-Eigenschaft bestimmt, wie API Gateway Payloads kodiert.

Die folgende Tabelle zeigt, wie Amazon API Gateway die Anforderungsnutzlast für bestimmte Konfigurationen des Content-Type-Headers einer Anforderung, die Liste binaryMediaTypes einer RestApi-Ressource und den Eigenschaftswert contentHandling der Integration-Ressource umwandelt.

API-Anfragen zur Konvertierung von Inhaltstypen in API Gateway
Nutzlast der Methodenanforderung Content-Type-Header der Anforderung binaryMediaTypes contentHandling Nutzlast der Integrationsanforderung
Textdaten Beliebiger Datentyp Undefined Undefined UTF8-kodierte Zeichenfolge
Textdaten Beliebiger Datentyp Undefined CONVERT_TO_BINARY Base64-dekodiertes binäres Blob
Textdaten Beliebiger Datentyp Undefined CONVERT_TO_TEXT UTF8-kodierte Zeichenfolge
Textdaten Ein Textdatentyp Satz mit übereinstimmenden Medientypen Undefined Textdaten
Textdaten Ein Textdatentyp Satz mit übereinstimmenden Medientypen CONVERT_TO_BINARY Base64-dekodiertes binäres Blob
Textdaten Ein Textdatentyp Satz mit übereinstimmenden Medientypen CONVERT_TO_TEXT Textdaten
Binäre Daten Ein binärer Datentyp Satz mit übereinstimmenden Medientypen Undefined Binäre Daten
Binäre Daten Ein binärer Datentyp Satz mit übereinstimmenden Medientypen CONVERT_TO_BINARY Binäre Daten
Binäre Daten Ein binärer Datentyp Satz mit übereinstimmenden Medientypen CONVERT_TO_TEXT Base64-kodierte Zeichenfolge

Die folgende Tabelle zeigt, wie Amazon API Gateway die Anforderungsnutzlast für bestimmte Konfigurationen des Accept-Headers einer Anforderung, die Liste binaryMediaTypes einer RestApi-Ressource und den Eigenschaftswert contentHandling der IntegrationResponse-Ressource umwandelt.

Wichtig

Wenn eine Anfrage mehrere Medientypen in ihrem Accept-Header enthält, berücksichtigt API Gateway nur den ersten Accept-Medientyp. Wenn Sie die Reihenfolge der Accept-Medientypen nicht beeinflussen können und der Medientyp Ihres binären Inhalts nicht der erste in der Liste ist, fügen Sie den ersten Accept-Medientyp in der binaryMediaTypes-Liste Ihrer API hinzu. API Gateway behandelt alle Inhaltstypen in dieser Liste als binär.

Um z. B. eine JPEG-Datei mit einem <img>-Element in einem Browser zu übermitteln, sendet der Browser möglicherweise Accept:image/webp,image/*,*/*;q=0.8 in einer Anforderung. Bei Hinzufügen von image/webp zur Liste binaryMediaTypes erhält der Endpunkt die JPEG-Datei als Binärdatei.

API Gateway-Antwort-Inhaltstyp-Konvertierungen
Nutzlast der Integrationsantwort Accept-Header der Anforderung binaryMediaTypes contentHandling Nutzlast der Methodenantwort
Text- oder Binärdaten Ein Texttyp Undefined Undefined UTF8-kodierte Zeichenfolge
Text- oder Binärdaten Ein Texttyp Undefined CONVERT_TO_BINARY Base64-dekodiertes Blob
Text- oder Binärdaten Ein Texttyp Undefined CONVERT_TO_TEXT UTF8-kodierte Zeichenfolge
Textdaten Ein Texttyp Satz mit übereinstimmenden Medientypen Undefined Textdaten
Textdaten Ein Texttyp Satz mit übereinstimmenden Medientypen CONVERT_TO_BINARY Base64-dekodiertes Blob
Textdaten Ein Texttyp Satz mit übereinstimmenden Medientypen CONVERT_TO_TEXT UTF8-kodierte Zeichenfolge
Textdaten Ein Binärtyp Satz mit übereinstimmenden Medientypen Undefined Base64-dekodiertes Blob
Textdaten Ein Binärtyp Satz mit übereinstimmenden Medientypen CONVERT_TO_BINARY Base64-dekodiertes Blob
Textdaten Ein Binärtyp Satz mit übereinstimmenden Medientypen CONVERT_TO_TEXT UTF8-kodierte Zeichenfolge
Binäre Daten Ein Texttyp Satz mit übereinstimmenden Medientypen Undefined Base64-kodierte Zeichenfolge
Binäre Daten Ein Texttyp Satz mit übereinstimmenden Medientypen CONVERT_TO_BINARY Binäre Daten
Binäre Daten Ein Texttyp Satz mit übereinstimmenden Medientypen CONVERT_TO_TEXT Base64-kodierte Zeichenfolge
Binäre Daten Ein Binärtyp Satz mit übereinstimmenden Medientypen Undefined Binäre Daten
Binäre Daten Ein Binärtyp Satz mit übereinstimmenden Medientypen CONVERT_TO_BINARY Binäre Daten
Binäre Daten Ein Binärtyp Satz mit übereinstimmenden Medientypen CONVERT_TO_TEXT Base64-kodierte Zeichenfolge

Bei Umwandlung einer Textnutzlast in ein binäres Blob geht API Gateway davon aus, dass es sich bei den Textdaten um eine base64-kodierte Zeichenfolge handelt, und gibt die Binärdaten als base64-dekodierten Blob zurück. Wenn die Konvertierung fehlschlägt, wird eine 500-Antwort zurückgegeben, die auf einen API-Konfigurationsfehler hinweist. Für eine solche Konvertierung geben Sie keine Mapping-Vorlage an, auch wenn Sie das Pass-Through-Verhalten in der API aktivieren müssen.

Bei der Konvertierung eines binären Payloads in eine Textzeichenfolge wendet API Gateway immer eine base64-Kodierung auf die Binärdaten an. Sie können eine Mapping-Vorlage für eine solche Nutzlast definieren, aber nur auf die base64-kodierte Zeichenfolge in der Mapping-Vorlage durch $input.body zugreifen, wie im folgenden Beispielauszug einer Mapping-Vorlage dargestellt.

{ "data": "$input.body" }

Damit die binäre Nutzlast unverändert übergeben wird, müssen Sie das Pass-Through-Verhalten in der API aktivieren.