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 Functions oder Cloud Run aufrufen.
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 Aufrufverknü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" } } ]
Ersetzen Sie Folgendes:
HTTP_REQUEST
: erforderlich. Verwenden Sie für HTTP-Anfragen eine der folgenden Optionen:http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: erforderlich. URL, an die die Anfrage gesendet wird.REQUEST_METHOD
: erforderlich, wenn der Aufruftyphttp.request
verwendet wird. Der zu verwendende HTTP-Anfragetyp. Beispiel:GET
POST
PATCH
DELETE
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 VPC Service Controls-konformen privaten Endpunkt aufrufen.HEADER_KEY
:HEADER_VALUE
ist optional. Header-Felder für die Bereitstellung der APIWenn Sie den Medientyp des Anfragetexts mit einem
Content-Type
-Header angeben, werden nur die folgenden Typen unterstützt:application/json
oderapplication/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 vorgesehen 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, wird
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
an diesen Wert angehängtWenn
User-Agent: "MY_USER_AGENT_VALUE"
angegeben ist, sieht der HTTP-Anfrageheader beispielsweise so aus (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
ist optional. Textfelder zur Bereitstellung einer Eingabe für die APIWenn kein
Content-Type
-Header angegeben ist und ein Anfragetext vorhanden ist, gilt Folgendes:- Wenn der Textwert Byte umfasst, wird der Header auf
Content-Type: application/octet-stream
gesetzt. - Andernfalls ist der Text JSON-codiert und der Header wird auf
Content-Type: application/json; charset=utf-8
gesetzt.
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 umfasst, wird der Header auf
QUERY_KEY
:QUERY_VALUE
ist optional. Abfragefelder zur Bereitstellung einer Eingabe für die APIAUTH_TYPE
: Optional. Erforderlich, wenn die aufgerufene API eine Authentifizierung erfordert. Verwenden Sie entwederOIDC
oderOAuth2
. Weitere Informationen finden Sie unter Authentifizierte Anfragen von einem Workflow aus senden.AUTH_SCOPE
: Optional. Beschränkt den Zugriff einer Anwendung auf das Konto eines Nutzers. Verwenden Sie entweder die Tastescope
oder die Tastescopes
.Der Schlüssel
scope
unterstü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
scopes
unterstützt nicht nur einen String oder eine Liste von Strings, sondern auch 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 findest du unter OAuth 2.0-Bereiche für Google APIs.
AUDIENCE
: Optional. Gibt die Zielgruppe für das OIDC-Token an. Standardmäßig ist er auf denselben Wert wieurl
festgelegt, sollte aber auf die Stamm-URL Ihres Dienstes festgelegt werden. Beispiel:https://region-project.cloudfunctions.net/hello_world
.
TIMEOUT_IN_SECONDS
: Optional. Legt in Sekunden fest, wie lange eine Anfrage ausgeführt werden darf, bevor eine Ausnahme ausgelöst wird. Maximal sind 1.800 Sekunden zulässig.RESULT_VALUE
: Optional. Variablenname, in dem das Ergebnis eines HTTP-Aufrufschritts gespeichert ist.
Auf in einer Variable gespeicherte HTTP-Antwortdaten zugreifen
Wenn im Header Content-Type
für die Antwort der Medientyp application/json
angegeben ist, wird die in einer Variable gespeicherte JSON-Antwort automatisch in eine Karte konvertiert, auf die zugegriffen werden kann.
Ändern Sie bei Bedarf die aufgerufene API, um für den Antwortheader Content-Type
den Medientyp application/json
anzugeben. Andernfalls können Sie den Antworttext mit den Funktionen json.decode
und text.encode
in eine Zuordnung 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 namentlich auf die HTTP-Antwortheader zuzugreifen.PATH_TO_FIELD
: der Pfad zum Feld in der JSON-Antwort, auf das Sie zugreifen möchten. Das Feld kann einfach der Name des Felds sein. Wenn das Feld in einem Objekt verschachtelt ist, kann es auch die Formobject1.object2.field
annehmen.
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
Sofern Sie keinen eigenen Suchbegriff eingeben, wird in diesem Beispiel Ihr Google Cloud-Standort verwendet, um einen Suchbegriff zu erstellen. Dieser wird dann an die Wikipedia API übergeben. Eine Liste mit ähnlichen Wikipedia-Artikeln wird 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 Functions verwenden
In diesem Beispiel wird eine HTTP-Anfrage mit OIDC durch Hinzufügen einerauth
zumargs
Abschnitt der Workflow-Definition, nachdem Sie die URL angegeben haben.
YAML
JSON
HTTP-Anfragefehler erkennen 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 erkennt eine potenzielle Ausnahme und gibt eine vordefinierte Fehlermeldung zurück. Wenn eine Ausnahme nicht erkannt wird, schlägt die Workflowausführung fehl und gibt die Ausnahme aus der GET-Anfrage zurück. Informationen zu anderen Fehler-Tags finden Sie unter Workflowfehler.
YAML
JSON
Nächste Schritte
- Workflows mit Cloud Run und Cloud Functions verwenden
- Einen VPC Service Controls-kompatiblen privaten Endpunkt aufrufen
- Den privaten lokalen Endpunkt, die Compute Engine, die GKE oder einen anderen Endpunkt durch Aktivieren von IAP aufrufen
- Referenz zur Workflows-Syntax