Sie können einen Workflowschritt definieren, der einen HTTP-Aufruf durchführt, und die Antwort des Aufrufs einer Variablen zuweisen. Beispielsweise können Sie über eine HTTP-Anfrage einen Google Cloud Dienst wie Cloud Run Functions oder Cloud Run aufrufen.
Das Aufrufen eines Google Cloud Dienstes über eine HTTP-Anfrage sollte nicht mit der Verwendung von Workflows Connectors verglichen werden, um API-Vorgänge auszuführen. Connectors vereinfachen den Aufruf von Diensten, da sie die Formatierung von Anfragen für Sie verarbeiten und Methoden und Argumente bereitstellen. Sie müssen also die Details einer Google Cloud API nicht kennen.
HTTP-Endpunkt aufrufen
Mit diesem Schritt können Sie eine HTTP-Anfrage stellen. Sowohl HTTP- als auch HTTPS-Anfragen werden unterstützt. Die gängigsten Methoden für HTTP-Anfragen haben eine Aufruf
verknüpfung wie http.get
und http.post. Sie können aber eine beliebige Methode verwenden, um Typ der HTTP-Anfrage. Dazu setzen Sie das Feld call auf http.request und
geben den Anfragetyp im Feld method an.
YAML
- STEP_NAME: call: HTTP_REQUEST args: url: URL_VALUE method: REQUEST_METHOD private_service_name: "REGISTERED_SERVICE" headers: HEADER_KEY:HEADER_VALUE ... body: BODY_KEY:BODY_VALUE ... query: QUERY_KEY:QUERY_VALUE ... auth: type: AUTH_TYPE scope: AUTH_SCOPE scopes: AUTH_SCOPE audience: AUDIENCE timeout: TIMEOUT_IN_SECONDS result: RESULT_VALUE
JSON
[ { "STEP_NAME": { "call": "HTTP_REQUEST", "args": { "url": "URL_VALUE", "method": "REQUEST_METHOD", "private_service_name": "REGISTERED_SERVICE", "headers": {"HEADER_KEY":"HEADER_VALUE", ... }, "body": {"BODY_KEY":"BODY_VALUE", ... }, "query": {"QUERY_KEY":"QUERY_VALUE", ... }, "auth": { "type":"AUTH_TYPE", "scope":"AUTH_SCOPE", "scopes":"AUTH_SCOPE", "audience":"AUDIENCE" }, "timeout": "TIMEOUT_IN_SECONDS" }, "result": "RESULT_VALUE" } } ]
Dabei gilt:
HTTP_REQUEST: Erforderlich. Verwenden Sie eine der folgenden für HTTP-Anfragen:http.deletehttp.gethttp.patchhttp.posthttp.puthttp.request
URL_VALUE: Erforderlich. URL, an die die Anfrage gesendet wird.REQUEST_METHOD: Erforderlich, wenn Sie den Aufruftyphttp.requestverwenden. Der zu verwendende HTTP-Anfragetyp. Beispiel:GETPOSTPATCHDELETE
REGISTERED_SERVICE: Optional. Ein registrierter Service Directory-Dienstname im Formatprojects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. Weitere Informationen finden Sie unter Privaten Endpunkt mit der Dienstregistrierung von Service Directory aufrufen.HEADER_KEY:HEADER_VALUE: Optional. Header-Felder für die Bereitstellung der APIWenn Sie den Medientyp des Anfragetexts mit einem
Content-TypeHeader angeben, werden nur die folgenden Typen unterstützt:application/jsonoderapplication/type+json– muss eine Karte seinapplication/x-www-form-urlencoded– muss ein nicht codierter String seintext/type– muss ein String sein
Wenn ein
Content-Type-Header angegeben ist, wird der Text wie vorgeschrieben codiert. Er kann beispielsweise JSON- oder URL-codiert sein.Wenn Sie einen
User-Agent-Header verwenden, um den anfragenden User-Agent zu identifizieren, gilt Folgendes:- Der Standardwert ist
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs) - Wenn ein Wert angegeben ist,
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)wird an diesen Wert angehängt.Wenn beispielsweise
User-Agent: "MY_USER_AGENT_VALUE"angegeben ist, lautet der HTTP-Anfrageheader so (mit einem Leerzeichen zwischen dem angegebenen Wert und dem angehängten Standardwert):MY_USER_AGENT_VALUE GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
BODY_KEY:BODY_VALUE: Optional. Textfelder zur Bereitstellung einer Eingabe für die APIWenn kein
Content-Type-Header angegeben ist und ein Anfrage text vorhanden ist, gilt Folgendes:- Wenn der Textwert Byte ist, wird der Header auf
Content-Type: application/octet-streamgesetzt. - Andernfalls wird der Text JSON-codiert und der Header auf
Content-Type: application/json; charset=utf-8gesetzt.
YAML
body: requests: - image: source: gcsImageUri: ${gsUri} features: - type: LABEL_DETECTION - type: SAFE_SEARCH_DETECTION - type: IMAGE_PROPERTIES result: imageAnalysisResponse
JSON
{ "requests":[ { "image": { "source": { "gcsUri": "img.png" } }, "features": [ { "type":"LABEL_DETECTION" }, { "type":"SAFE_SEARCH_DETECTION" }, { "type":"IMAGE_PROPERTIES" }, ] } ] }
- Wenn der Textwert Byte ist, wird der Header auf
QUERY_KEY:QUERY_VALUE: Optional. Abfragefelder zur Bereitstellung einer Eingabe für die APIAUTH_TYPE: Optional. Erforderlich, wenn die aufgerufene API eine Authentifizierung erfordert. Verwenden Sie entwederOIDCoderOAuth2. Weitere Informationen finden Sie unter Authentifizierte Anfragen von einem Workflow aus ausführen.AUTH_SCOPE: Optional. Beschränkt den Zugriff einer Anwendung auf das Konto eines Nutzers. Verwenden Sie entweder den Schlüsselscopeoderscopes.Der Schlüssel
scopeunterstützt entweder einen String oder eine Liste von Strings. Beispiel:"https://www.googleapis.com/auth/cloud-platform"oder
["https://www.googleapis.com/auth/cloud-platform", "scope2", "scope3"]Der Schlüssel
scopesunterstützt neben einem String oder einer Liste von Strings auch durch Leerzeichen und kommagetrennte Strings. Beispiel:"https://www.googleapis.com/auth/cloud-platform scope2 scope3"oder
"https://www.googleapis.com/auth/cloud-platform,scope2,scope3"Weitere Informationen finden Sie unter OAuth 2.0-Bereiche für Google APIs.
AUDIENCE: Optional. Gibt die Zielgruppe für das OIDC-Token an. Standardmäßig ist der Wert aufurlgesetzt. Er sollte jedoch auf die Stamm-URL Ihres Dienstes gesetzt werden. Beispiel:https://region-project.cloudfunctions.net/hello_world.
TIMEOUT_IN_SECONDS: Optional. Die Dauer in Sekunden , die eine Anfrage ausgeführt werden darf, bevor eine Ausnahme ausgelöst wird. Das Maximum beträgt 1.800 Sekunden.RESULT_VALUE: Optional. Variablenname, in dem das Ergebnis eines HTTP-Aufrufschritts gespeichert ist.
Auf in einer Variable gespeicherte HTTP-Antwortdaten zugreifen
Wenn der Content-Type-Header für die Antwort einen application/json-Medientyp angibt, wird die in einer Variablen gespeicherte JSON-Antwort automatisch in eine Zuordnung konvertiert, auf die zugegriffen werden kann.
Ändern Sie bei Bedarf die aufgerufene API, um einen application/json-Medientyp für den Content-Type-Antwortheader anzugeben. Andernfalls können Sie die
json.decode
und text.encode Funktionen verwenden, um
den Antworttext in eine Zuordnung zu konvertieren. Beispiel:
json.decode(text.encode(RESPONSE_FROM_API))
Workflows enthalten einen integrierten Parser für den Zugriff auf diese Daten. Verwenden Sie die folgende Syntax, um über die HTTP-Antwort auf die Felder zuzugreifen:
${VARIABLE_NAME.body|code|headers.PATH_TO_FIELD}Ersetzen Sie Folgendes:
VARIABLE_NAME: Der Name der Workflowvariable, in der Sie eine JSON-Antwort gespeichert haben.body: Verwenden Sie das Feldbody, um auf den Text der HTTP-Antwort zuzugreifen.code: Verwenden Sie das Feldcode, um auf den HTTP-Antwortcode zuzugreifen.headers: Verwenden Sie das Feldheaders, um nach Namen auf die HTTP-Antwortheader zuzugreifen.PATH_TO_FIELD: Pfad zum Feld in der JSON-Antwort, auf die Sie zugreifen möchten. Dies kann der Name des Felds sein. Wenn das Feld in einem Objekt verschachtelt ist, kann es die Formobject1.object2.fieldhaben.
Wenn eine API beispielsweise {"age":50} zurückgibt und ein Workflow diese Antwort
in einer Variablen mit dem Namen age_response speichert, gibt das folgende Beispiel den Wert des
Felds age zurück: In diesem Fall gilt 50:
age_response.body.age
Beispiele
Diese Beispiele veranschaulichen die Syntax.
Antwort von einem API-Aufruf zuweisen
Wenn Sie keinen eigenen Suchbegriff eingeben, verwendet dieses Beispiel Ihren Google Cloud Standort, um einen Suchbegriff zu erstellen, der an die Wikipedia API übergeben wird. Es wird eine Liste mit verwandten Wikipedia-Artikeln zurückgegeben.
YAML
JSON
Externe HTTP-POST-Anfrage stellen
In diesem Beispiel wird eine POST-Anfrage an einen externen HTTP-Endpunkt gesendet.
YAML
JSON
Externe HTTP GET-Anfrage mit Headern senden
In diesem Beispiel wird eine HTTP GET-Anfrage mit einem benutzerdefinierten Header gesendet. Sie können auch benutzerdefinierte Headerdefinitionen festlegen, wenn Sie andere Arten von HTTP-Anfragen stellen.
YAML
JSON
OIDC zur Authentifizierung bei einer Anfrage an Cloud Run Functions verwenden
In diesem Beispiel wird eine HTTP-Anfrage mit OIDC durch Hinzufügen eines auth-Abschnitts zum Abschnitt args der Workflow-Definition, nachdem Sie die URL angegeben haben.
YAML
JSON
Fehler bei HTTP-Anfragen abfangen und verarbeiten
In diesem Beispiel wird ein benutzerdefinierter Ausnahme-Handler basierend auf dem HTTP-Statuscode implementiert, der von der GET-Anfrage zurückgegeben wird. Der Workflow erfasst eine potenzielle Ausnahme und gibt eine vordefinierte Fehlermeldung zurück. Wenn eine Ausnahme nicht erkannt wird, schlägt die Workflowausführung fehl und die Ausnahme wird so ausgelöst, wie sie von der GET-Anfrage zurückgegeben wurde. Weitere Fehler-Tags finden Sie unter Workflow-Fehler.
YAML
JSON
Nächste Schritte
- Anleitung: Workflows mit Cloud Run und Cloud Run Functions verwenden
- Privaten Endpunkt mit der Dienstregistrierung von Service Directory aufrufen
- IAP-gesicherten Endpunkt aufrufen
- Referenz zur Workflows-Syntax