É possível definir uma etapa de fluxo de trabalho que faça uma chamada HTTP e atribuir a resposta da chamada a uma variável. Por exemplo, é possível invocar um serviço do Google Cloud como o Cloud Functions ou o Cloud Run por uma solicitação HTTP.
Invocar um endpoint HTTP
Esse tipo de etapa permite fazer uma solicitação HTTP. Tanto solicitações HTTP como HTTPS
são compatíveis. Os métodos de solicitação HTTP mais comuns têm um atalho
de chamada (como http.get
e http.post), mas é possível fazer
qualquer tipo de solicitação HTTP definindo o campo call
como http.request
e
especificando o tipo de solicitação usando o campo method
.
YAML
- STEP_NAME: call: HTTP_REQUEST args: url: URL_VALUE method: REQUEST_METHOD headers: HEADER_KEY:HEADER_VALUE ... body: BODY_KEY:BODY_VALUE ... query: QUERY_KEY:QUERY_VALUE ... auth: type: AUTH_TYPE scope: SCOPE audience: AUDIENCE timeout: TIMEOUT_IN_SECONDS result: RESULT_VALUE
JSON
[ { "STEP_NAME": { "call": "HTTP_REQUEST", "args": { "url": "URL_VALUE", "method": "REQUEST_METHOD", "headers": {"HEADER_KEY":"HEADER_VALUE", ... }, "body": {"BODY_KEY":"BODY_VALUE", ... }, "query": {"QUERY_KEY":"QUERY_VALUE", ... }, "auth": { "type":"AUTH_TYPE", "scope":"SCOPE", "audience":"AUDIENCE" }, "timeout": "TIMEOUT_IN_SECONDS" }, "result": "RESULT_VALUE" } } ]
Substitua:
HTTP_REQUEST
: obrigatório. Use um dos seguintes itens para solicitações HTTP:http.delete
http.get
http.patch
http.post
http.put
http.request
URL_VALUE
: obrigatório. URL para onde a solicitação é enviada.REQUEST_METHOD
: obrigatório se o tipo de chamada forhttp.request
. O tipo de método de solicitação HTTP a ser usado. Por exemplo:GET
POST
PATCH
DELETE
HEADER_KEY
:HEADER_VALUE
: opcional. Campos do cabeçalho para fornecer entrada à API.Se você usar um cabeçalho
Content-Type
para especificar o tipo de mídia do corpo da solicitação, somente os tipos a seguir serão compatíveis:application/json
ouapplication/type+json
: precisa ser um mapaapplication/x-www-form-urlencoded
: precisa ser uma string não codificada- É preciso que
text/type
seja uma string.
Se você estiver usando um cabeçalho
User-Agent
para identificar o user agent solicitante, as seguintes condições serão aplicadas:- O padrão é
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
- Se um valor for especificado,
GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
será anexado a esse valor.Por exemplo, se
User-Agent: "MY_USER_AGENT_VALUE"
for especificado, o cabeçalho da solicitação HTTP será o seguinte (com um espaço entre o valor especificado e o padrão anexado):MY_USER_AGENT_VALUE GoogleCloudWorkflows; (+https://cloud.google.com/workflows/docs)
BODY_KEY
:BODY_VALUE
: opcional. Campos do corpo para fornecer a entrada à API. A estrutura pode ser equivalente a um payload JSON. Exemplo: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" }, ] } ] }
QUERY_KEY
:QUERY_VALUE
: opcional. Campos de consulta para fornecer a entrada à API.AUTH_TYPE
: opcional. Obrigatório se a API que está sendo chamada exige autenticação. UseOIDC
ouOAuth2
. Para mais informações, consulte Fazer solicitações autenticadas de um fluxo de trabalho.SCOPE
: opcional. Limita o acesso de um aplicativo à conta de um usuário. Pode ser uma string ou uma lista de strings.Exemplo:
"https://www.googleapis.com/auth/cloud-platform"
ou
["https://www.googleapis.com/auth/cloud-platform", "scope2", "scope3"]
Para mais informações, consulte Escopos OAuth 2.0 para APIs do Google.
AUDIENCE
: opcional. Especifica o público-alvo do token OIDC. Por padrão, ele é definido como o mesmo valor deurl
. No entanto, ele precisa ser definido como o URL raiz do serviço. Exemplo:https://region-project.cloudfunctions.net/hello_world
.
TIMEOUT_IN_SECONDS
: opcional. Quanto tempo (em segundos) uma solicitação pode ser executada antes de gerar uma exceção. O máximo é 1.800 segundos.RESULT_VALUE
: opcional. Nome da variável em que o resultado de uma etapa de invocação HTTP é armazenado.
Acessar dados de resposta HTTP salvos em uma variável
Se o cabeçalho Content-Type
da resposta especificar um tipo de mídia application/json
, a resposta JSON armazenada em uma variável será convertida automaticamente em um mapa que pode ser acessado.
Se necessário, modifique a API que está sendo chamada para especificar um
tipo de mídia application/json
para o cabeçalho de resposta
Content-Type
. Caso contrário, use as funções json.decode
e text.encode
para converter o corpo da resposta em um mapa. Exemplo:
json.decode(text.encode(RESPONSE_FROM_API))
O Workflows tem um analisador integrado para acessar esses dados. Para acessar os campos da resposta HTTP, use a seguinte sintaxe:
${VARIABLE_NAME.body|code.PATH_TO_FIELD}
Substitua:
VARIABLE_NAME
: o nome da variável de fluxo de trabalho em que você salvou uma resposta JSON.body
: use o campobody
para acessar o corpo da resposta HTTP.code
: use o campocode
para acessar o código de resposta HTTP.PATH_TO_FIELD
: o caminho para o campo na resposta JSON que você quer acessar. Pode ser simplesmente o nome do campo ou, se o campo estiver aninhado em um objeto, pode assumir a forma deobject1.object2.field
.
Por exemplo, se uma API retorna {"age":50}
e um fluxo de trabalho armazena essa resposta
em uma variável chamada age_response
, o exemplo a seguir retorna o valor do
campo age
. Nesse caso, 50
:
age_response.body.age
Amostras
Estas amostras demonstram a sintaxe.
Atribuir a resposta de uma chamada de API
Este exemplo faz uma chamada para uma API de amostra. O dia retornado da semana é transmitido para a API Wikipedia. Os artigos relevantes na Wikipédia sobre o dia atual da semana são retornados.
YAML
JSON
Fazer uma solicitação POST HTTP externa
Este exemplo faz uma solicitação POST para um endpoint HTTP externo.
YAML
JSON
Fazer uma solicitação HTTP GET externa com cabeçalhos
Este exemplo faz uma solicitação HTTP GET com um cabeçalho personalizado. Também é possível fornecer definições personalizadas de cabeçalho ao fazer outros tipos de solicitações HTTP.
YAML
JSON
Usar o OIDC para autenticar ao fazer uma solicitação ao Cloud Functions
Neste exemplo, fazemos uma solicitação HTTP usando o OIDC adicionando uma seção auth
à
seção args
da definição do fluxo de trabalho, depois de especificar o URL.
YAML
JSON
Detectar e processar erros de solicitação HTTP
Este exemplo implementa um gerenciador de exceções personalizado com base no código de status HTTP retornado pela solicitação GET. O fluxo de trabalho detecta uma possível exceção e retorna uma mensagem de erro predefinida. Se uma exceção não for reconhecida, a execução do fluxo de trabalho falhará e a gerará como retornada pela solicitação GET. Para ver outras tags de erro, consulte Erros de fluxo de trabalho.
YAML
JSON
A seguir
- Tutorial sobre como usar o Workflows com o Cloud Run e o Cloud Functions
- Invocar o ambiente particular local, Compute Engine, GKE ou outro endpoint
- Referência de sintaxe dos fluxos de trabalho