Puedes definir un paso del flujo de trabajo que realice una llamada HTTP y asignar la respuesta de la llamada a una variable. Por ejemplo, puedes invocar una instancia de Google Cloud servicio como Cloud Run Functions o Cloud Run a través de una solicitud HTTP.
Invoca un extremo HTTP
Este tipo de paso te permite realizar una solicitud HTTP. HTTP y HTTPS
solicitudes son compatibles. Los métodos de solicitud HTTP más comunes tienen una llamada
(como http.get)
y http.post), pero puedes hacer que
cualquier tipo de solicitud HTTP. Para ello, establece el campo call
en http.request
y
y especifica el tipo de solicitud con el 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" } } ]
Reemplaza lo siguiente:
HTTP_REQUEST
: obligatorio. Usa una de las siguientes opciones para solicitudes HTTP:http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: obligatorio. URL a la que se envía la solicitudREQUEST_METHOD
: Es obligatorio si se usa el tipo de llamadahttp.request
. El tipo de método de solicitud HTTP que se usará. Por ejemplo:GET
POST
PATCH
DELETE
REGISTERED_SERVICE
: es opcional. Una cuenta registrada Es el nombre del servicio del Directorio de servicios en el formato.projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME
Para obtener más información, consulta Invoque un Extremo privado compatible con los Controles del servicio de VPC.HEADER_KEY
:HEADER_VALUE
: opcional. Campos de encabezado para proporcionar entradas a la API.Si usas un encabezado
Content-Type
para especificar la tipo de medio del cuerpo de la solicitud, solo se admiten los siguientes tipos:application/json
oapplication/type+json
: Debe ser un mapa.application/x-www-form-urlencoded
: Debe ser un valor sin codificación. cadenatext/type
: Debe ser una cadena.
Si se especifica un encabezado
Content-Type
, el cuerpo se se codificarán según las instrucciones. Por ejemplo, puede estar codificado en formato JSON o en URL.Si usas un encabezado
User-Agent
para identificar que solicita el usuario-agente, se aplican las siguientes condiciones:- El valor predeterminado es
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
- Si se especifica un valor,
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
se agrega a ese valorPor ejemplo,
User-Agent: "MY_USER_AGENT_VALUE"
se especifica el encabezado de la solicitud HTTP, el encabezado de la solicitud HTTP sería el siguiente (con un espacio entre el valor especificado y el valor predeterminado agregado):MY_USER_AGENT_VALUE GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
BODY_KEY
:BODY_VALUE
: Opcional. Campos del cuerpo para proporcionar entradas a la API.Si no se especifica un encabezado
Content-Type
y hay un cuerpo de solicitud, se aplica lo siguiente:- Si el valor del cuerpo es bytes, el encabezado se establece en
Content-Type: application/octet-stream
. - De lo contrario, el cuerpo está codificado en JSON y el encabezado se establece en
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" }, ] } ] }
- Si el valor del cuerpo es bytes, el encabezado se establece en
QUERY_KEY
:QUERY_VALUE
: opcional. Campos de consulta para proporcionar entradas a la APIAUTH_TYPE
: es opcional. Obligatorio si la API que se requiere autenticación. UsaOIDC
oOAuth2
Para obtener más información, consulta Autenticación solicitudes de un flujo de trabajo.AUTH_SCOPE
: es opcional. Limita el ancho de banda de una aplicación acceso a la cuenta de un usuario. Usa la teclascope
oscopes
.La clave
scope
admite una cadena o una lista de cadenas. Por ejemplo:"https://www.googleapis.com/auth/cloud-platform"
o
["https://www.googleapis.com/auth/cloud-platform", "scope2", "scope3"]
La clave
scopes
, además de admitir una cadena o una lista de cadenas, admite cadenas separadas por espacios y comas. Por ejemplo:"https://www.googleapis.com/auth/cloud-platform scope2 scope3"
o
"https://www.googleapis.com/auth/cloud-platform,scope2,scope3"
Para obtener más información, consulta Alcances de OAuth 2.0 para las APIs de Google
AUDIENCE
: es opcional. Especifica el público para el token de OIDC. De forma predeterminada, se establece en el mismo valor queurl
. Sin embargo, debes establecerla en la URL raíz de tu servicio. Por ejemplo:https://region-project.cloudfunctions.net/hello_world
TIMEOUT_IN_SECONDS
: es opcional. Cuánto tiempo en segundos una solicitud puede ejecutarse antes de arrojar una excepción. El máximo es 1,800 segundos.RESULT_VALUE
: es opcional. Nombre de la variable donde el de un paso de invocación HTTP.
Accede a los datos de respuesta HTTP guardados en una variable
Si el encabezado Content-Type
de la respuesta especifica un
tipo de medio application/json
, la respuesta JSON que se almacena en un
variable se convierte automáticamente en un mapa al que se puede acceder.
Si es necesario, modifica la API a la que se llama para especificar un tipo de media application/json
para el encabezado de respuesta Content-Type
. De lo contrario, puedes usar el
json.decode
y las funciones text.encode
para
y convertir el cuerpo de la respuesta en un mapa. Por ejemplo:
json.decode(text.encode(RESPONSE_FROM_API))
Workflows incluye un analizador integrado para acceder a estos datos. Cómo acceder los campos de la respuesta HTTP, usa la siguiente sintaxis:
${VARIABLE_NAME.body|code|headers.PATH_TO_FIELD}
Reemplaza lo siguiente:
VARIABLE_NAME
: Es el nombre de la variable del flujo de trabajo en la que guardaste una respuesta JSON.body
: Usa el campobody
para acceder al cuerpo de la respuesta HTTP.code
: Usa el campocode
para acceder al código de respuesta HTTP.headers
: Usa el campoheaders
para acceder a los encabezados de respuesta HTTP por nombre.PATH_TO_FIELD
: Es la ruta de acceso al campo en el archivo JSON. respuesta a la que quieres acceder. Puede ser simplemente el nombre del campo o si el está anidado dentro de un objeto, puede tener la formaobject1.object2.field
.
Por ejemplo, si una API muestra {"age":50}
y un flujo de trabajo almacena esa respuesta
en una variable llamada age_response
, el siguiente ejemplo muestra el valor de
el campo age
En este caso, 50
:
age_response.body.age
Muestras
En estos ejemplos, se muestra la sintaxis.
Asigna la respuesta de una llamada a la API
A menos que ingreses tu propio término de búsqueda, esta muestra usa tus Google Cloud para construir un término de búsqueda, que pasa al API de Wikipedia: Se muestra una lista de artículos de Wikipedia relacionados.
YAML
JSON
Realiza una solicitud POST de HTTP externa
En esta muestra, se realiza una solicitud POST a un extremo HTTP externo.
YAML
JSON
Realiza una solicitud HTTP GET externa con encabezados
En esta muestra, se realiza una solicitud GET HTTP con un encabezado personalizado. También puedes proporcionar definiciones de encabezados personalizados cuando se realizan otros tipos de solicitudes HTTP.
YAML
JSON
Usa OIDC para la autenticación cuando se realice una solicitud a las funciones de Cloud Run
En esta muestra, se agrega una sección auth
al archivo OIDC para realizar una solicitud HTTP
Sección args
de la definición del flujo de trabajo, después de especificar la URL.
YAML
JSON
Cómo detectar y manejar errores de solicitudes HTTP
En esta muestra, se implementa un controlador de excepciones personalizado basado en el código de estado HTTP que devuelve la solicitud GET. El flujo de trabajo detecta una posible excepción y devuelve un mensaje de error predefinido. Si no se reconoce una excepción, el la ejecución del flujo de trabajo falla y arroja la excepción como lo muestra GET para cada solicitud. Para ver otras etiquetas de error, consulta Errores de flujo de trabajo.
YAML
JSON
¿Qué sigue?
- Instructivo para usar Workflows con Cloud Run y funciones de Cloud Run
- Invoca un extremo privado que cumpla con los Controles del servicio de VPC
- Invoca un extremo privado local, de Compute Engine, de GKE o a otro extremo habilitando IAP
- Referencia de la sintaxis de flujos de trabajo