Verwenden mulipart/form-data nicht vollständig durch AWS API-Gateway unterstützt werden, vor allem, wenn wir versuchen, Datei über mulipart/form-Daten zu senden.
Um ein Bild zusammen mit anderen Daten aus dem Formular zu senden, wäre es wahrscheinlich die beste Lösung, es als JSON zu senden, wobei das Bild mit base64 codiert ist.
Zum Beispiel, wenn jemand senden möchten:
- Benutzername (string)
- Avatar (Bild)
Avatar mit Base64 codiert werden soll. Es gibt ein Bild als Text, wie:
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyA...
Der Inhalt POST Nachricht wäre:
{
"user_account": {
"avatar": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyA...",
"username": "my name"
}
}
API-Gateway
In-API-Gateway, unter dem API, offen Modelle und erstellen Sie ein neues Modell, zum Beispiel UserAccount:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "UserAccountUpdate",
"type": "object",
"properties": {
"user": {
"type": "object",
"properties": {
"avatar": { "type": "string" },
"username": { "type": "string" }
}
}
}
}
In Methode anfordern ->HTTP-Request-Header Satz: Content-Type
.
In Methode anfordern ->Anfrage Körper Sets: application/json
und als Modell Gebrauch erstellt Useraccount Modell.
In Integration Anfrage ->Inhalt Handhabung Satz wie: Pass-Through.
In Integration Anfrage ->Body Mapping-Vorlagen wählen: Wenn keine Vorlage entspricht den reuqest Content-Type-Header. (Sie können hier auch zwei andere Optionen verwenden und zusätzliche Zuordnungsvorlagen festlegen).
Backend
Backend empfängt ein Bild als Text mit Base64-kodiert. Also wahrscheinlich, bevor es weiter verwendet, muss es es von Text zu Bild dekodieren.
Die Kodierung/Dekodierung von Bildern mit base64 ist sehr beliebt, daher sollten Sie in Ihren Frameworks einige geeignete Tools/Bibliotheken finden.