Methodenantworten in API Gateway einrichten - Amazon API Gateway

Methodenantworten in API Gateway einrichten

Eine API-Methodenantwort kapselt die Ausgabe einer API-Methodenanforderung, die der Client erhält. Die Ausgabedaten enthalten einen HTTP-Statuscode, einige Header und in der Regel einen Textkörper.

Mit Nicht-Proxy-Integrationen können die angegebenen Antwortparameter und Textkörper von den zugeordneten Integrationsantwortdaten oder bestimmten statischen Werten entsprechend der Mappings zugewiesen werden. Diese Mappings werden in der Integrationsantwort beschrieben. Das Mapping kann eine identische Transformation sein, die die Integrationsantwort unverändert weiterleitet.

Bei einer Proxy-Integration leitet API Gateway die Antwort des Backends automatisch an die Antwort der Methode weiter. Sie müssen sich nicht um die Einrichtung der API-Methodenantwort kümmern. Bei der Lambda-Proxy-Integration muss die Lambda-Funktion jedoch ein Ergebnis in diesem Ausgabeformat zurückgeben, damit API Gateway die Integrationsantwort erfolgreich einer Methodenantwort zuordnen kann.

Programmgesteuert ist die Einrichtung der Methodenantwort gleichzusetzen mit dem Erstellen einer MethodResponse-Ressource von API Gateway und dem Einrichten der Eigenschaften von statusCode, responseParameters und responseModels.

Wenn Sie Statuscodes für eine API-Methode festlegen, sollten Sie einen als Standard auswählen, um jede Integrationsantwort eines unerwarteten Statuscodes zu bearbeiten. Es ist sinnvoll, 500 als Standard festzulegen, da dies mit dem Umwandeln von ansonsten nicht zugeordneten Antworten als serverseitiger Fehler gleichzusetzen ist. Zur Vereinfachung legt die API Gateway-Konsole die 200-Antwort als Standard fest. Sie können dies jedoch auf die 500-Antwort zurücksetzen.

Um eine Methodenantwort einzurichten, müssen Sie die Methodenanforderung erstellt haben.

Einrichten des Statuscodes der Methodenantwort

Der Statuscode einer Methodenantwort definiert einen Antworttyp. Beispiel: Antworten von 200, 400 und 500 geben jeweils erfolgreiche, clientseitige Fehler und serverseitige Fehlerantworten an.

Um den Statuscode einer Methodenantwort einzurichten, legen Sie die statusCode-Eigenschaft auf einen HTTP-Statuscode fest. Der folgende AWS CLI-Befehl erstellt eine Methodenantwort von 200.

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200

Einrichten von Parametern der Methodenantwort

Parameter der Methodenantwort definieren, welche Header der Client als Reaktion auf die zugeordnete Methodenanforderung erhält. Antwortparameter legen auch ein Ziel fest, dem API Gateway einen Parameter der Integrationsantwort entsprechend der Mappings zuweist, die in der Integrationsantwort der API beschrieben sind.

Um die Parameter der Methodenantwort einzurichten, fügen Sie der responseParameters-Zuordnung der MethodResponse-Schlüssel-Wert-Paare im Format "{parameter-name}":"{boolean}" hinzu. Der folgende CLI-Befehl zeigt ein Beispiel für die Festlegung des my-header-Headers, der petId-Pfadvariable und des query-Abfrageparameters als die Mapping-Ziele:

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.request.header.my-header=false,method.request.path.petId=true,method.request.querystring.query=false

Einrichten von Modellen der Methodenantwort

Ein Modell der Methodenantwort definiert ein Format des Textkörpers der Methodenantwort. Bevor Sie das Antwortmodell einrichten können, müssen Sie das Modell zunächst in API Gateway erstellen. Dazu können Sie den Befehl create-model aufrufen. Das folgende Beispiel zeigt, wie Sie ein PetStorePet-Modell erstellen, um den Textkörper der Antwort der GET /pets/{petId}-Methodenanforderung zu beschreiben.

aws apigateway create-model \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --content-type application/json \ --name PetStorePet \ --schema '{ \ "$schema": "http://json-schema.org/draft-04/schema#", \ "title": "PetStorePet", \ "type": "object", \ "properties": { \ "id": { "type": "number" }, \ "type": { "type": "string" }, \ "price": { "type": "number" } \ } \ }'

Das Ergebnis wird als eine API Gateway-Model-Ressource erstellt.

Um das Modell der Methodenantwort zum Definieren des Nutzlastformats einzurichten, fügen Sie das Schlüssel-Wert-Paar "application/json":" PetStorePet" zur requestModels-Zuordnung der MethodResponse-Ressource hinzu. Der folgende AWS CLI-Befehl put-method-response zeigt, wie dies geschieht:

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.request.header.my-header=false,method.request.path.petId=true,method.request.querystring.query=false \ --response-models '{"application/json":"PetStorePet"}'

Das Einrichten eines Methodenantwort-Modells ist erforderlich, wenn Sie einen stark typisierten SDK für die API generieren. Es stellt sicher, dass die Ausgabe an eine geeignete Klasse in Java oder Objective-C übergeben wird. In anderen Fällen ist das Einrichten eines Modells optional.