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-Integrationen für REST APIs in API Gateway
Sie können eine API-Methode mit einem HTTP-Endpunkt mithilfe der HTTP-Proxy-Integration oder der benutzerdefinierten HTTP-Integration integrieren.
API Gateway unterstützt die folgenden Endpunkt-Ports: 80, 443 und 1024-65535.
Mit der Proxy-Integration ist die Einrichtung einfach. Sie müssen nur die HTTP-Methode und die HTTP-Endpunkt-URI entsprechend der Backend-Anforderungen festlegen, wenn Sie sich nicht mit der Codierung oder dem Caching von Inhalten befassen.
Mit der benutzerdefinierten Integration ist die Einrichtung komplexer. Zusätzlich zu den Einrichtungsschritten der Proxy-Integration müssen Sie angeben, wie die eingehenden Anforderungsdaten der Integrationsanforderung und die resultierenden Integrationsantwortdaten der Methodenantwort zugeordnet werden.
Themen
HTTP-Proxy-Integrationen in API Gateway einrichten
Erstellen Sie zum Einrichten einer Proxy-Ressource mit dem HTTP-Proxy-Integrationstyp eine API-Ressource mit einem gierigen Pfadparameter (zum Beispiel /parent/{proxy+}) und integrieren Sie diese Ressource mit einem HTTP-Backend-Endpunkt (zum Beispiel https://petstore-demo-endpoint.execute-api.com/petstore/{proxy}) in die Methode ANY. Der gierige Pfadparameter muss am Ende des Ressourcenpfads stehen.
Wie bei einer Nicht-Proxy-Ressource können Sie eine Proxy-Ressource mit der HTTP-Proxy-Integration einrichten, indem Sie die API Gateway-Konsole verwenden, eine OpenAPI-Definitionsdatei importieren oder die API Gateway-REST-API direkt aufrufen. Detaillierte Anweisungen für die Verwendung der API Gateway-Konsole zur Konfiguration einer Proxy-Ressource mit der HTTP-API-Integration finden Sie unter Tutorial: Erstellen einer REST-API mit HTTP-Proxy-Integration.
Die folgende OpenAPI-Definitionsdatei zeigt ein Beispiel für eine API mit einer Proxyressource, die in die PetStore
In diesem Beispiel wird ein Cache-Schlüssel für den Pfadparameter method.request.path.proxy der Proxy-Ressource deklariert. Dies ist die Standardeinstellung, wenn Sie die API mit der API Gateway-Konsole erstellen. Der Basispfad der API (/testentspricht einer Phase) ist der PetStore Seite der Website (/petstore) zugeordnet. Die einzelne Integrationsanfrage spiegelt die gesamte PetStore Website wider und verwendet dabei die Greedy Path-Variable der API und die ANY Catch-All-Methode. Die folgenden Beispiele veranschaulichen diese Spiegelung.
-
Festlegen von
ANYalsGETund{proxy+}alspetsVom Frontend initiierte Methodenanforderung:
GET https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/test/pets HTTP/1.1An das Backend gesendete Integrationsanforderung:
GET http://petstore-demo-endpoint.execute-api.com/petstore/pets HTTP/1.1Die Laufzeitinstanzen der Methode
ANYund der Proxy-Ressource sind beide gültig. Der Aufruf gibt eine Antwort200 OKmit der Nutzlast zurück, die den ersten Batch Haustiere enthält, wie vom Backend zurückgegeben. -
Festlegen von
ANYalsGETund{proxy+}alspets?type=dogGET https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/test/pets?type=dog HTTP/1.1An das Backend gesendete Integrationsanforderung:
GET http://petstore-demo-endpoint.execute-api.com/petstore/pets?type=dog HTTP/1.1Die Laufzeitinstanzen der Methode
ANYund der Proxy-Ressource sind beide gültig. Der Aufruf gibt eine Antwort200 OKmit der Nutzlast zurück, die den ersten Batch der angegebenen Hunde enthält, wie vom Backend zurückgegeben. -
Festlegen von
ANYalsGETund{proxy+}alspets/{petId}Vom Frontend initiierte Methodenanforderung:
GET https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/test/pets/1 HTTP/1.1An das Backend gesendete Integrationsanforderung:
GET http://petstore-demo-endpoint.execute-api.com/petstore/pets/1 HTTP/1.1Die Laufzeitinstanzen der Methode
ANYund der Proxy-Ressource sind beide gültig. Der Aufruf gibt eine Antwort200 OKmit der Nutzlast zurück, die das angegebene Haustier enthält, wie vom Backend zurückgegeben. -
Festlegen von
ANYalsPOSTund{proxy+}alspetsVom Frontend initiierte Methodenanforderung:
POST https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/test/pets HTTP/1.1 Content-Type: application/json Content-Length: ... { "type" : "dog", "price" : 1001.00 }An das Backend gesendete Integrationsanforderung:
POST http://petstore-demo-endpoint.execute-api.com/petstore/pets HTTP/1.1 Content-Type: application/json Content-Length: ... { "type" : "dog", "price" : 1001.00 }Die Laufzeitinstanzen der Methode
ANYund der Proxy-Ressource sind beide gültig. Der Aufruf gibt eine Antwort200 OKmit der Nutzlast zurück, die das neu erstellte Haustier enthält, wie vom Backend zurückgegeben. -
Festlegen von
ANYalsGETund{proxy+}alspets/catVom Frontend initiierte Methodenanforderung:
GET https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/test/pets/catAn das Backend gesendete Integrationsanforderung:
GET http://petstore-demo-endpoint.execute-api.com/petstore/pets/catDie Laufzeit-Instance des Proxy-Ressourcenpfads entspricht keinem Backend-Endpunkt und die resultierende Anforderung ist ungültig. Dies hat zur Folge, dass eine Antwort
400 Bad Requestmit der folgenden Fehlermeldung zurückgegeben wird.{ "errors": [ { "key": "Pet2.type", "message": "Missing required field" }, { "key": "Pet2.price", "message": "Missing required field" } ] } -
Festlegen von
ANYalsGETund{proxy+}alsnullVom Frontend initiierte Methodenanforderung:
GET https://4z9giyi2c1.execute-api.us-west-2.amazonaws.com/testAn das Backend gesendete Integrationsanforderung:
GET http://petstore-demo-endpoint.execute-api.com/petstore/petsDie Zielressource ist der Proxy-Ressource übergeordnet, aber die Laufzeit-Instance der Methode
ANYist in der API auf dieser Ressource nicht definiert. Infolgedessen gibt dieseGET-Anfrage eine403 Forbidden-Antwort mit derMissing Authentication Token-Fehlermeldung zurück, die von API Gateway zurückgegeben wird. Wenn die API die MethodeANYoderGETin der übergeordneten Ressource (/) verfügbar macht, gibt der Aufruf eine Antwort404 Not Foundmit der MeldungCannot GET /petstorezurück, wie vom Backend zurückgegeben.
Wenn die URL des Zielendpunkts ungültig ist oder das HTTP-Verb gültig ist, aber nicht unterstützt wird, gibt das Backend für jede Clientanforderung die Antwort 404 Not Found zurück. Bei einer nicht unterstützten HTTP-Methode wird eine Antwort 403 Forbidden zurückgegeben.
Benutzerdefinierte HTTP-API-Integrationen in API Gateway einrichten
Mit der benutzerdefinierten HTTP-Integration, auch bekannt als Nicht-Proxy-Integration, haben Sie mehr Kontrolle darüber, welche Daten zwischen einer API-Methode und einer API-Integration übertragen werden sollen und wie Sie diese Daten übertragen. Dies können Sie mithilfe von Daten-Mappings tun.
Als Teil der Einrichtung der Methodenanforderung legen Sie die requestParameters-Eigenschaft für eine Method-Ressource fest. Dies gibt an, welche Methodenanforderungsparameter, die von dem Client bereitgestellt werden, den Integrationsanforderungsparametern oder den geltenden Textkörpereigenschaften zugeordnet werden sollen, bevor sie an den Backend versendet werden. Anschließend legen Sie im Rahmen der Einrichtung der Integrationsanfrage die Eigenschaft requestParameters für die entsprechende Integrationsressource fest, um die parameter-to-parameter Zuordnungen anzugeben. Sie legen auch die requestTemplates-Eigenschaft fest, um die Mapping-Vorlagen anzugeben, eine für jeden unterstützten Inhaltstyp. Die Mapping-Vorlagen weisen Methodenanforderungsparameter oder Textkörper dem Anforderungstextkörper der Integration zu.
In ähnlicher Weise legen Sie im Rahmen der Einrichtung der Methodenantwort die Eigenschaft responseParameters für die Ressource fest. MethodResponse Dies gibt an, welche Methodenantwortparameter, die an den Client gesendet werden sollen, von den Integrationsantwortparametern oder bestimmten geltenden Textkörpereigenschaften zugeordnet werden sollen, die vom Backend zurückgegeben wurden. Anschließend richten Sie das selectionPattern ein, um eine Integrationsantwort basierend auf der Antwort des Backends auszuwählen. Bei einer Nicht-Proxy-HTTP-Integration handelt es sich dabei um einen regulären Ausdruck. Beispiel: Um alle 2xx-HTTP-Statuscodes von einem HTTP-Endpunkt dieser Ausgabezuordnung zuzuweisen, verwenden Sie 2\d{2}.
Anmerkung
API Gateway verwendet für das Antwort-Mapping Regexe-Anweisungen im Java-Pattern-Stil. Weitere Informationen finden Sie unter Pattern
Anschließend legen Sie im Rahmen der Einrichtung der Integrationsantwort die ResponseParameters-Eigenschaft für die entsprechende IntegrationResponseRessource fest, um die Zuordnungen anzugeben. parameter-to-parameter Sie legen auch die responseTemplates-Zuordnung fest, um die Mapping-Vorlagen anzugeben, eine für jeden unterstützten Inhaltstyp. Die Mapping-Vorlagen weisen Methodenantwortparameter oder Textkörpereigenschaften der Integrationsantwort dem Antworttextkörper der Methode zu.
Weitere Hinweise zum Einrichten von Mapping-Vorlagen finden Sie unter Datentransformationen für REST APIs in API Gateway.