Puoi definire un passaggio del flusso di lavoro che effettui una chiamata HTTP e assegnare la risposta dalla chiamata a una variabile. Ad esempio, puoi richiamare un Google Cloud come Cloud Functions o Cloud Run tramite una richiesta HTTP.
Richiama un endpoint HTTP
Questo tipo di passaggio consente di effettuare una richiesta HTTP. Sia HTTP che HTTPS
sono supportate. I metodi di richiesta HTTP più comuni prevedono
(ad esempio http.get)
e http.post), ma puoi creare
qualsiasi tipo di richiesta HTTP impostando il campo call
su http.request
e
specificando il tipo di richiesta utilizzando il campo method
.
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" } } ]
Sostituisci quanto segue:
HTTP_REQUEST
: obbligatorio. Utilizza una delle seguenti opzioni per le richieste HTTP:http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: obbligatorio. URL a cui viene inviata la richiesta.REQUEST_METHOD
: obbligatorio se si utilizza il tipo di chiamatahttp.request
. Il tipo di metodo di richiesta HTTP da utilizzare. Ad esempio:GET
POST
PATCH
DELETE
REGISTERED_SERVICE
: facoltativo. Un registrato Nome del servizio Service Directory nel formatoprojects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME
. Per ulteriori informazioni, vedi Richiama un Endpoint privato conforme ai Controlli di servizio VPC.HEADER_KEY
:HEADER_VALUE
: facoltativo. Campi intestazione per fornire l'input all'API.Se utilizzi un'intestazione
Content-Type
per specificare tipo multimediale del corpo della richiesta, sono supportati solo i seguenti tipi:application/json
oapplication/type+json
: deve essere una mappaapplication/x-www-form-urlencoded
: deve essere un formato non codificato stringatext/type
: deve essere una stringa
Se viene specificata un'intestazione
Content-Type
, il corpo è codificati come prescritto. Ad esempio, potrebbe essere in formato JSON o con codifica URL.Se utilizzi un'intestazione
User-Agent
per identificare che richiede lo user agent, si applica quanto segue:- L'impostazione predefinita è
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
- Se viene specificato un valore,
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
viene aggiunto a quel valoreAd esempio, se
User-Agent: "MY_USER_AGENT_VALUE"
, l'intestazione della richiesta HTTP sarà la seguente (con un spazio tra il valore specificato e il valore predefinito aggiunto):MY_USER_AGENT_VALUE GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
BODY_KEY
:BODY_VALUE
: facoltativo. Campi del corpo per fornire l'input all'API.Se non viene specificata un'intestazione
Content-Type
e se una richiesta esistente, si applica quanto segue:- Se il valore del corpo è byte, l'intestazione è impostata su
Content-Type: application/octet-stream
. - In caso contrario, il corpo viene codificato in formato JSON e l'intestazione è impostata su
Content-Type: application/json; charset=utf-8
.
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" }, ] } ] }
- Se il valore del corpo è byte, l'intestazione è impostata su
QUERY_KEY
:QUERY_VALUE
: facoltativo. Campi query per fornire l'input all'API.AUTH_TYPE
: facoltativo. Obbligatorio se l'API viene denominata richiede l'autenticazione. UsaOIDC
oOAuth2
. Per ulteriori informazioni, vedi Rendi autenticato richieste da un flusso di lavoro.AUTH_SCOPE
: facoltativo. Limita lo script di un'applicazione l'accesso all'account di un utente. Usa la chiavescope
oscopes
.La chiave
scope
supporta una stringa o un elenco di stringhe. Ad esempio:"https://www.googleapis.com/auth/cloud-platform"
o
["https://www.googleapis.com/auth/cloud-platform", "scope2", "scope3"]
La chiave
scopes
, oltre a supportare una stringa o elenco di stringhe, supporta stringhe separate da spazi e virgole. Ad esempio:"https://www.googleapis.com/auth/cloud-platform scope2 scope3"
o
"https://www.googleapis.com/auth/cloud-platform,scope2,scope3"
Per ulteriori informazioni, vedi Ambiti OAuth 2.0 per le API di Google.
AUDIENCE
: facoltativo. Specifica il pubblico per il token OIDC. Per impostazione predefinita, il valore è lo stesso diurl
. ma dovrebbe essere impostato all'URL principale del tuo servizio. Ad esempio:https://region-project.cloudfunctions.net/hello_world
.
TIMEOUT_IN_SECONDS
: facoltativo. Durata in secondi può essere eseguita una richiesta prima di generare un'eccezione. Il massimo è 1800 secondi.RESULT_VALUE
: facoltativo. Nome della variabile in cui viene archiviato il risultato di una chiamata HTTP.
Accedere ai dati della risposta HTTP salvati in una variabile
Se l'intestazione Content-Type
della risposta specifica un
application/json
, la risposta JSON archiviata in un
viene convertita automaticamente in una mappa a cui è possibile accedere.
Se necessario, modifica l'API che viene chiamata per specificare
Tipo di media application/json
per Content-Type
l'intestazione della risposta. Altrimenti, puoi utilizzare
json.decode
e text.encode
per
converti il corpo della risposta in una mappa. Ad esempio:
json.decode(text.encode(RESPONSE_FROM_API))
Workflows include un parser integrato per accedere a questi dati. Per accedere dei campi della risposta HTTP, utilizza la seguente sintassi:
${VARIABLE_NAME.body|code|headers.PATH_TO_FIELD}
Sostituisci quanto segue:
VARIABLE_NAME
: il nome della variabile del flusso di lavoro in cui hai salvato una risposta JSON.body
: utilizza il campobody
per accedere al corpo della risposta HTTP.code
: utilizza il campocode
per accedere al codice di risposta HTTP.headers
: utilizza il campoheaders
per accedere alle intestazioni della risposta HTTP per nome.PATH_TO_FIELD
: il percorso del campo nel file JSON la risposta a cui vuoi accedere. Può essere semplicemente il nome del campo o se è nidificato all'interno di un oggetto, può avere il formatoobject1.object2.field
.
Ad esempio, se un'API restituisce {"age":50}
e un flusso di lavoro archivia la risposta
in una variabile denominata age_response
, l'esempio seguente restituisce il valore di
il campo age
; in questo caso 50
:
age_response.body.age
Esempi
Questi esempi dimostrano la sintassi.
Assegnare la risposta da una chiamata API
A meno che non inserisci un tuo termine di ricerca, questo esempio utilizza il tuo indirizzo e-mail Google Cloud località per costruire un termine di ricerca, che passa alla API Wikipedia. R viene restituito un elenco di articoli di Wikipedia correlati.
YAML
JSON
Creare una richiesta POST HTTP esterna
In questo esempio viene effettuata una richiesta POST a un endpoint HTTP esterno.
YAML
JSON
Crea una richiesta GET HTTP esterna con le intestazioni
In questo esempio viene creata una richiesta GET HTTP con un'intestazione personalizzata. Puoi anche fornire definizioni di intestazioni personalizzate quando si effettuano altri tipi di richieste HTTP.
YAML
JSON
Utilizza OIDC per l'autenticazione quando effettui una richiesta a Cloud Functions
In questo esempio viene effettuata una richiesta HTTP utilizzando OIDC con l'aggiunta di una sezione auth
alla
Sezione args
della definizione del flusso di lavoro, dopo aver specificato l'URL.
YAML
JSON
Rilevare e gestire gli errori delle richieste HTTP
Questo esempio implementa un gestore di eccezioni personalizzato basato sul codice di stato HTTP che viene restituito dalla richiesta GET. Il flusso di lavoro rileva una potenziale eccezione restituisce un messaggio di errore predefinito. Se un'eccezione non viene riconosciuta, l'esecuzione del flusso di lavoro non riesce e genera l'eccezione restituita dal comando GET richiesta. Per altri tag di errore, consulta Errori del flusso di lavoro.
YAML
JSON
Passaggi successivi
- Tutorial: usa Workflows con Cloud Run e Cloud Functions
- Richiamare un endpoint privato conforme a Controlli di servizio VPC
- Richiama un endpoint privato on-prem, Compute Engine, GKE o un altro endpoint abilitando IAP
- Riferimento per la sintassi di Workflows