Puedes definir un paso de flujo de trabajo que haga una llamada HTTP y asignar la respuesta de la llamada a una variable. Por ejemplo, puedes invocar un Google Cloud servicio como Cloud Run Functions o Cloud Run a través de una solicitud HTTP.
Invocar un Google Cloud servicio a través de una solicitud HTTP no debe confundirse con el uso de conectores de Workflows conectores para realizar operaciones de API. Los conectores simplifican las llamadas a los servicios porque manejan el formato de las solicitudes por ti y proporcionan métodos y argumentos para que no necesites conocer los detalles de una Google Cloud API.
Invoca un extremo HTTP
Este tipo de paso te permite realizar una solicitud HTTP. Se admiten solicitudes HTTP y HTTPS. Los métodos de solicitud HTTP más comunes tienen un acceso directo de llamada (como http.get
y http.post), pero puedes realizar
cualquier tipo de solicitud HTTP si configuras el campo call en http.request y
especificas 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 las solicitudes HTTP:http.deletehttp.gethttp.patchhttp.posthttp.puthttp.request
URL_VALUE: Obligatorio. Es la URL a la que se envía la solicitud.REQUEST_METHOD: Obligatorio si se usa el tipo de llamadahttp.request. Es el tipo de método de solicitud HTTP que se usará. Por ejemplo:GETPOSTPATCHDELETE
REGISTERED_SERVICE: Opcional. Es un nombre de servicio registrado en el Directorio de servicios con el formatoprojects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. Para obtener más información, consulta Invoca un extremo privado con el registro de servicios del Directorio de servicios.HEADER_KEY:HEADER_VALUE: Opcional. Son los campos de encabezado para proporcionar entrada a la API.Si usas un encabezado
Content-Typepara especificar el tipo de medio del cuerpo de la solicitud, solo se admiten los siguientes tipos:application/jsonoapplication/type+json—Debe ser un mapa.application/x-www-form-urlencoded: Debe ser una cadena sin codificar .text/type: Debe ser una cadena.
Si se especifica un encabezado
Content-Type, el cuerpo se codifica según lo prescrito. Por ejemplo, puede ser JSON o codificado en URL.Si usas un encabezado
User-Agentpara identificar el agente de usuario solicitante, se aplica lo siguiente:- 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 valor.Por ejemplo, si
User-Agent: "MY_USER_AGENT_VALUE"se especifica, 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. Son los campos del cuerpo para proporcionar entrada a la API.Si no se especifica un encabezado
Content-Typey hay un cuerpo de solicitud , se aplica lo siguiente:- Si el valor del cuerpo son 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 son bytes, el encabezado se establece en
QUERY_KEY:QUERY_VALUE: Opcional. Son los campos de consulta para proporcionar entrada a la API.AUTH_TYPE: Opcional. Obligatorio si la API a la que se llama requiere autenticación. UsaOIDCoOAuth2. Para obtener más información, consulta Realiza solicitudes autenticadas desde un flujo de trabajo.AUTH_SCOPE: Opcional. Limita el acceso de una aplicación a la cuenta de un usuario. Usa la clavescopeoscopes.La clave
scopeadmite 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"]Además de admitir una cadena o una lista de cadenas, la clave
scopesadmite 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 Permisos de OAuth 2.0 para las APIs de Google.
AUDIENCE: Opcional. Especifica el público para el token de OIDC. De forma predeterminada, se establece en el mismo valor queurl; sin embargo, debe establecerse en la URL raíz de tu servicio. Por ejemplo:https://region-project.cloudfunctions.net/hello_world.
TIMEOUT_IN_SECONDS: Opcional. Es el tiempo en segundos que se permite que se ejecute una solicitud antes de generar una excepción. El máximo es de 1,800 segundos.RESULT_VALUE: Opcional. Es el nombre de la variable en la que se almacena el resultado 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 una 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 medio application/json para el encabezado de respuesta Content-Type. De lo contrario, puedes usar las funciones
json.decode
y text.encode para
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. Para acceder a 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 de flujo de trabajo en la que guardaste una respuesta JSON.body: Usa el campobodypara acceder al cuerpo de la respuesta HTTP.code: Usa el campocodepara acceder al código de respuesta HTTP.headers: Usa el campoheaderspara acceder a los encabezados de respuesta HTTP por nombre.PATH_TO_FIELD: Es la ruta de acceso al campo en la respuesta JSON a la que deseas acceder. Puede ser el nombre del campo o, si el campo está anidado dentro de un objeto, puede tomar la forma deobject1.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 estas muestras, se demuestra 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 tu Google Cloud ubicación para construir un término de búsqueda, que pasa a la API de Wikipedia. Se muestra una lista de artículos de Wikipedia relacionados.
YAML
JSON
Realiza una solicitud HTTP POST 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 de HTTP con un encabezado personalizado. También puedes proporcionar definiciones de encabezado personalizadas cuando realices otros tipos de solicitudes HTTP.
YAML
JSON
Usa OIDC para autenticarte cuando realices una solicitud a Cloud Run Functions
En esta muestra, se realiza una solicitud HTTP con OIDC agregando una sección auth a la sección args de la definición del flujo de trabajo, después de especificar la URL.
YAML
JSON
Detecta y controla errores de solicitud HTTP
En esta muestra, se implementa un controlador de excepciones personalizado basado en el código de estado HTTP que muestra la solicitud GET. El flujo de trabajo detecta una posible excepción y muestra un mensaje de error predefinido. Si no se reconoce una excepción, la ejecución del flujo de trabajo falla y genera la excepción que muestra la solicitud GET. Para obtener otras etiquetas de error, consulta Errores de flujo de trabajo.
YAML
JSON
¿Qué sigue?
- Usa Workflows con el instructivo de Cloud Run y Cloud Run Functions
- Invoca un extremo privado con el registro de servicios del Directorio de servicios
- Invoca un extremo protegido con IAP
- Referencia de la sintaxis de flujos de trabajo