Daten an den und von dem Backend-Dienst übergeben

Wenn ein API-Client eine Anfrage an Ihre in API Gateway bereitgestellte API sendet, kann er einige oder alle der folgenden Informationen als Teil der Anfrage übergeben:

  • Anfrageheader
  • Abfrageparameter
  • Formulardaten
  • XML- oder JSON-Nutzlasten
  • Anfragepfade

Beim Erstellen der Antwort auf die API-Anfrage kann der Backend-Dienst Daten an den API-Client zurückgeben, darunter:

  • Antwortheader
  • XML- oder JSON-Nutzlasten

In diesem Dokument wird beschrieben, wie diese Daten an den und von dem Backend-Dienst übergeben werden.

Wie werden Anfragedaten an den Backend-Dienst übergeben?

Alle Daten in der Anfrage vom API-Client werden unverändert an den Backend-Dienst übergeben. Es liegt dann am Backend-Dienst, die Anfragedaten im Rahmen der Anfrageverarbeitung zu parsen.

Wie werden Antwortdaten an den API-Client zurückgegeben?

Alle Daten, die in der Antwort vom Backend-Dienst empfangen werden, werden unverändert an den API-Client weitergegeben. Es liegt dann am API-Client, alle zurückgegebenen Daten in der Antwort zu verarbeiten.

Wie wird die Anfrage-URL an den Backend-Dienst übergeben?

Die URL, die für eine Anfrage an den Backend-Dienst verwendet wird, wird von der Erweiterung x-google-backend gesteuert. In diesem Abschnitt werden die Optionen zum Konfigurieren der URL des Backend-Dienstes beschrieben.

Adresse und Pfad des Backend-Dienstes in der OpenAPI-Spezifikation festlegen

In der OpenAPI-Spezifikation, die Sie zum Erstellen einer API-Konfiguration verwenden, geben Sie mit der Erweiterung x-google-backend die URL des Backend-Dienstes an. Sie geben den Backend-Dienst beispielsweise so an:

Backend x-google-backend
Cloud Run-Funktionen
x-google-backend:
  address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
Cloud Run Einer der folgenden:
  • x-google-backend:
      address: APP_URL
  • x-google-backend:
      address: DETERMINISTIC_URL
App Engine-Standardumgebung
x-google-backend:
  address: https://PROJECT_ID.appspot.com

In diesen Beispielen gilt Folgendes:

  • APP_URL gibt die tatsächliche URL Ihres Cloud Run-Dienstes an (den vollständigen Pfad der aufgerufenen API), auch als nicht deterministische URL bezeichnet. Beispiel: https://hello-abc1def2gh-uc.a.run.app.
  • DETERMINISTIC_URL ist die deterministische URL für das Backend Ihres Cloud Run-Dienstes.

Außerdem wird mit dem Parameter path in der OpenAPI-Spezifikation der Endpunkt oder die Ressource angegeben, die von Ihrer API unterstützt wird. Sie können einen absoluten Pfad oder einen Pfad mit Pfadparametern angeben:

Pfad Pfad mit Parametern
paths:
  /hello:
paths:
  /hello/{name}:

Backend-Dienst-URL aus einer API-Anfrage generieren

Wenn API Gateway eine Anfrage vom API-Client verarbeitet, wird die vom API-Client gesendete Anfrage-URL in die URL übersetzt, die für die Anfrage an den Backend-Dienst verwendet wird. Wie genau diese Übersetzung erfolgt, hängt von der verwendeten Pfadübersetzungsstrategie ab.

Die Option path_translation für die Erweiterung x-google-backend unterstützt zwei Strategien für die Pfadübersetzung:

  • APPEND_PATH_TO_ADDRESS: Die URL des Backend-Dienstes wird generiert, indem der Ressourcenpfad aus der Clientanfrage an die URL address der Erweiterung x-google-backend angehängt wird.

    Die meisten Backend-Dienste verwenden APPEND_PATH_TO_ADDRESS, da das Backend so denselben Ressourcenpfad erhält, der vom API-Client angegeben wurde.

  • CONSTANT_ADDRESS: Die URL des Backend-Dienstes ist konstant, wie durch die URL address der Erweiterung x-google-backend definiert. Wenn die Clientanfrage einen Ressourcenpfad enthält, wird der Ressourcenpfad mithilfe von Abfrageparametern der URL des Backend-Dienstes hinzugefügt.

    Diese Methode wird normalerweise von Cloud Run Functions verwendet.

Beispiel:

  • APPEND_PATH_TO_ADDRESS
    • address: https://PROJECT_ID.appspot.com
    • Ohne OpenAPI-Pfadparameter
      • OpenAPI-Pfad: /hello
      • Ressourcenpfad der API-Clientanfrage: /hello
      • Backend-Dienst-Anfrage-URL: https://PROJECT_ID.appspot.com/hello
    • Mit OpenAPI-Pfadparameter
      • OpenAPI-Pfad: /hello/{name}
      • Ressourcenpfad der API-Clientanfrage: /hello/Dave
      • Backend-Dienst-Anfrage-URL: https://PROJECT_ID.appspot.com/hello/Dave
  • CONSTANT_ADDRESS
    • address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
    • Ohne OpenAPI-Pfadparameter
      • OpenAPI-Pfad: /hello
      • Ressourcenpfad der API-Clientanfrage: /hello
      • Backend-Dienst-Anfrage-URL: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
    • Mit OpenAPI-Pfadparametern
      • OpenAPI-Pfad: /hello/{name}
      • Ressourcenpfad der API-Clientanfrage: /hello/Dave
      • Backend-Dienst-Anfrage-URL: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello?name=Dave

path_translation festlegen

Legen Sie path_translation als Teil der Einstellung x-google-backend fest:

x-google-backend:
  address: https://GCP_REGION-PROJECT_ID.cloudfunctions.net/hello
  path_translation: [ APPEND_PATH_TO_ADDRESS | CONSTANT_ADDRESS ]`

Der Standardwert von path_translation hängt davon ab, wo Sie x-google-backend in Ihrer OpenAPI-Spezifikation festlegen:

  • Wenn x-google-backend auf der obersten Ebene der OpenAPI-Spezifikation verwendet wird, wird path_translation standardmäßig auf APPEND_PATH_TO_ADDRESS gesetzt.

  • Wenn x-google-backend auf Vorgangsebene der OpenAPI-Spezifikation verwendet wird, ist path_translation standardmäßig auf CONSTANT_ADDRESS festgelegt.