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