Grundlegende Anfragevalidierung in API Gateway testen - Amazon API Gateway

Grundlegende Anfragevalidierung in API Gateway testen

Wählen Sie eines der folgenden Themen mit Anweisungen zum Testen der grundlegenden Anforderungsvalidierung für die Beispiel-API aus.

Grundlegende Anfragevalidierung mit der API Gateway-REST-API testen

Sie können die Aufruf-URL der bereitgestellten API anzeigen, indem Sie die API mit dem Header Accept: application/json oder Accept: application/yaml aus der Stufe exportieren:

GET /restapis/abcdef123/stages/testStage/exports/swagger?extensions=validators HTTP/1.1 Accept: application/json Content-Type: application/json Host: apigateway.us-east-1.amazonaws.com X-Amz-Date: 20170306T234936Z Authorization: AWS4-HMAC-SHA256 Credential={access_key_ID}/20170306/us-east-1/apigateway/aws4_request, SignedHeaders=content-length;content-type;host;x-amz-date, Signature={sig4_hash}

Den Abfrageparameter ?extensions=validators können Sie ignorieren, wenn Sie die OpenAPI-Spezifikationen der Anforderungsvalidierung nicht herunterladen möchten.

So testen Sie die Anfragevalidierungmit den API Gateway-REST-API-Aufrufen
  1. Rufen Sie die folgende Seite auf: GET /validation?q1=cat.

    GET /testStage/validation?q1=cat HTTP/1.1 Host: abcdef123.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

    Da der erforderliche Parameter q1 gesetzt wurde und nicht leer ist, wird die Anforderung erfolgreich validiert. API Gateway gibt die folgende 200 OK-Antwort zurück:

    [ { "id": 1, "type": "cat", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "cat", "price": 0.99 } ]
  2. Rufen Sie die folgende Seite auf: GET /validation.

    GET /testStage/validation HTTP/1.1 Host: abcdef123.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

    Da der erforderliche Parameter q1 nicht gesetzt wurde, kann die Anforderung nicht erfolgreich validiert werden. API Gateway gibt die folgende 400 Bad Request-Antwort zurück:

    { "message": "Missing required request parameters: [q1]" }
  3. Rufen Sie die folgende Seite auf: GET /validation?q1=.

    GET /testStage/validation?q1= HTTP/1.1 Host: abcdef123.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

    Da der erforderliche Parameter q1 leer ist, kann die Anforderung nicht erfolgreich validiert werden. API Gateway gibt dieselbe 400 Bad Request-Antwort wie im vorherigen Beispiel zurück.

  4. Rufen Sie die folgende Seite auf: POST /validation.

    POST /testStage/validation HTTP/1.1 Host: abcdef123.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json h1: v1 { "name" : "Marco", "type" : "dog", "price" : 260 }

    Da der erforderliche Header-Parameter h1 gesetzt wurde und nicht leer ist und auch das Nutzlastformat den erforderlichen Eigenschaften und Einschränkungen von RequestDataModel entspricht, wird die Anfrage erfolgreich validiert. API Gateway gibt die folgende erfolgreiche Antwort zurück.

    { "pet": { "name": "Marco", "type": "dog", "price": 260 }, "message": "success" }
  5. Rufen Sie POST /validation auf, ohne den Header h1 anzugeben oder dessen Wert auf leer zu setzen.

    POST /testStage/validation HTTP/1.1 Host: abcdef123.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json { "name" : "Marco", "type" : "dog", "price" : 260 }

    Da der erforderliche Header-Parameter h1 fehlt oder auf leer gesetzt ist, kann die Anforderung nicht erfolgreich validiert werden. API Gateway gibt die folgende 400 Bad Request-Antwort zurück:

    { "message": "Missing required request parameters: [h1]" }
  6. Rufen Sie POST /validation auf und legen Sie die Eigenschaft type der Nutzlast auf bird fest.

    POST /testStage/validation HTTP/1.1 Host: abcdef123.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json X-Amz-Date: 20170309T000215Z h1: v1 { "name" : "Molly", "type" : "bird", "price" : 269 }

    Da der Eigenschaftswert type kein Element der Aufzählung ["dog", "cat", "fish"] ist, kann die Anforderung nicht erfolgreich validiert werden. API Gateway gibt die folgende 400 Bad Request-Antwort zurück:

    { "message": "Invalid request body" }

    Wenn price auf 501 festgelegt wird, widerspricht das einer Einschränkung der Eigenschaft. Deshalb kann die Anforderung nicht erfolgreich validiert werden und es wird die gleiche 400 Bad Request-Antwort zurückgegeben.

Grundlegende Anfragevalidierung mit der API Gateway-Konsole testen

In den folgenden Schritten wird beschrieben, wie die grundlegende Anfragevalidierung in der API Gateway-Konsole getestet wird.

So testen Sie mit TestInvoke in der API Gateway-Konsole die Anfragevalidierung für eine Methode:

Melden Sie sich an der API Gateway-Konsole an. Gehen Sie wie folgt vor:

  1. Wählen Sie Ressourcen für die API aus, für die Sie eine Anforderungsvalidierungszuordnung konfiguriert haben.

  2. Wählen Sie eine Methode aus, für die Sie eine bestimmte Anforderungsvalidierung aktiviert haben.

  3. Wählen Sie unter Method Execution im Feld Client die Option Test aus.

  4. Probieren Sie verschiedene Werte für die erforderlichen Parameter und den Text der Anforderung aus und wählen Sie Test, um die Antwort zu sehen.

Wenn der Methodenaufruf erfolgreich validiert wird, erhalten Sie die erwarteten Antworten. Kann die Validierung nicht erfolgreich ausgeführt werden, erhalten Sie die folgende Fehlermeldung, wenn die Nutzlast nicht das richtige Format aufweist:

{ "message": "Invalid request body" }

Falls die Anforderungsparameter nicht gültig sind, wird folgende Fehlermeldung zurückgegeben:

{ "message": "Missing required request parameters: [p1]" }