Compartilhar via


Receber e responder a chamadas HTTPS de entrada enviadas para fluxos de trabalho nos Aplicativos Lógicos do Azure

Aplica-se a: Aplicativos Lógicos do Azure (Consumo + Padrão)

Este guia mostra como criar um fluxo de trabalho de aplicativo lógico que pode receber e manipular uma solicitação HTTPS de entrada de outro serviço usando o gatilho interno Solicitação . Quando o fluxo de trabalho usa esse gatilho, o fluxo de trabalho pode responder à chamada HTTPS usando a ação interna resposta .

Observação

A ação Resposta funciona somente quando você usa o gatilho De solicitação .

Por exemplo, seu fluxo de trabalho pode executar as seguintes tarefas quando você usa o gatilho de solicitação e a ação resposta :

  • Receber e responder a uma solicitação HTTPS para dados em um banco de dado local.

  • Receber e responder a uma solicitação HTTPS de outro fluxo de trabalho de aplicativo lógico.

  • Disparar uma execução de fluxo de trabalho quando ocorrer um evento de webhook externo.

Para executar o fluxo de trabalho enviando uma solicitação de saída ou enviada, use o gatilho interno HTTP ou a ação interna HTTP.

Pré-requisitos

  • Instale ou use uma ferramenta que possa enviar solicitações HTTP para testar sua solução, por exemplo:

    Atenção

    Para cenários em que você tem dados confidenciais, como credenciais, segredos, tokens de acesso, chaves de API e outras informações semelhantes, use uma ferramenta que proteja seus dados com os recursos de segurança necessários. A ferramenta deve funcionar offline ou localmente e não exigir entrar em uma conta online ou sincronizar dados com a nuvem. Ao usar uma ferramenta com essas características, você reduz o risco de expor dados confidenciais ao público.

Adicionar um gatilho de Solicitação

O gatilho de Solicitação cria um ponto de extremidade que pode ser chamado manualmente e que pode receber apenas solicitações de entrada de HTTPS. Quando um chamador envia uma solicitação para esse ponto de extremidade, o gatilho de Solicitação é acionado e executa o aplicativo lógico. Para obter informações sobre como chamar este gatilho, consulte Chamar, disparar ou aninhar fluxos de trabalho com pontos de extremidade HTTPS em Aplicativos Lógicos do Azure.

  1. No portal do Azure, abra o recurso de aplicativo lógico de Consumo.

  2. No menu da barra lateral, em Ferramentas de Desenvolvimento, selecione o designer para abrir seu fluxo de trabalho em branco.

  3. Adicione o gatilho interno Solicitação chamado Quando uma solicitação HTTP é recebida ao seu fluxo de trabalho seguindo as etapas gerais para adicionar um gatilho.

  4. Depois que a caixa de informações do gatilho for exibida, forneça as seguintes informações:

    Nome da propriedade Nome da propriedade JSON Obrigatório Descrição
    HTTP URL {none} Sim O URL do ponto de extremidade gerada depois que você salva o fluxo de trabalho e é usada para enviar uma solicitação que dispara seu fluxo de trabalho.
    Esquema JSON do corpo da solicitação schema Não O esquema JSON que descreve as propriedades e os valores no corpo da solicitação de entrada. O designer usa esse esquema para gerar tokens para as propriedades na solicitação. Dessa forma, o fluxo de trabalho pode analisar, consumir e passar as saídas do gatilho de Solicitação para o fluxo de trabalho.

    Se você não tiver um esquema JSON, poderá gerar o esquema a partir de um payload de amostra com o recurso Usar payload de amostra para gerar o esquema.

    O exemplo a seguir mostra um esquema JSON de exemplo:

    Captura de tela mostrando o fluxo de trabalho de consumo e o gatilho de solicitação com um esquema JSON de exemplo.

    O exemplo a seguir mostra o esquema JSON de exemplo completo:

    {
       "type": "object",
       "properties": {
          "account": {
             "type": "object",
             "properties": {
                "name": {
                   "type": "string"
                },
                "ID": {
                   "type": "string"
                },
                "address": {
                   "type": "object",
                   "properties": {
                      "number": {
                         "type": "string"
                      },
                      "street": {
                         "type": "string"
                      },
                      "city": {
                         "type": "string"
                      },
                      "state": {
                         "type": "string"
                      },
                      "country": {
                         "type": "string"
                      },
                      "postalCode": {
                         "type": "string"
                      }
                   }
                }
             }
          }
       }
    }
    

    Quando você insere um esquema JSON, o designer pode mostrar um lembrete para incluir o Content-Type cabeçalho em sua solicitação e definir esse valor de cabeçalho como application/json. Para saber mais, veja Lidar com tipos de conteúdo.

    O exemplo a seguir mostra como o Content-Type cabeçalho aparece no formato JSON:

    {
       "Content-Type": "application/json"
    }
    

    Para gerar um esquema JSON baseado no conteúdo esperado (dados), você pode usar uma ferramenta como json-schema.org ou seguir estas etapas:

    1. No gatilho de Solicitação, selecione Usar conteúdo de amostra para gerar o esquema.

      Captura de tela mostrando o fluxo de trabalho de Consumo, o Gatilho de Solicitação e a opção para usar o conteúdo de exemplo para gerar esquema.

    2. Insira o payload de exemplo e selecione Concluído.

      Captura de tela mostrando o fluxo de trabalho de consumo, o disparador de solicitação e a carga útil de exemplo inserida para gerar o esquema.

      O exemplo a seguir mostra o payload de amostra:

      {
         "account": {
            "name": "Contoso",
            "ID": "12345",
            "address": {
               "number": "1234",
               "street": "Anywhere Street",
               "city": "AnyTown",
               "state": "AnyState",
               "country": "USA",
               "postalCode": "11111"
            }
         }
      }
      
  5. Para verificar se a chamada de entrada tem um corpo de solicitação correspondente ao esquema especificado, siga estas etapas:

    1. Para impor a mensagem de entrada para ter exatamente os mesmos campos que seu esquema descreve, em seu esquema, adicione a propriedade required e especifique os campos obrigatórios. Adicione a additionalProperties propriedade e defina o valor como false.

      Por exemplo, o esquema a seguir especifica que a mensagem de entrada deve ter o campo msg e não qualquer outro campo:

      {
         "properties": {
           "msg": {
              "type": "string"
           }
         },
         "type": "object",
         "required": ["msg"],
         "additionalProperties": false
      }
      
    2. No designer, selecione o gatilho de solicitação. No painel de informações que é aberto, selecione a guia Configurações.

    3. Expanda Tratamento de Dados e defina a Validação de Esquema como Ativada.

      Se o corpo da solicitação da chamada de entrada não corresponder ao seu esquema, o gatilho retornará um erro Solicitação inválida de HTTP 400.

  6. Na lista Método , selecione o método que o gatilho espera que as solicitações de entrada usem.

    A captura de tela mostrando o fluxo de trabalho Padrão, o gatilho de solicitação e a lista de métodos aberta com um método selecionado.

  7. Se houver outros parâmetros para o gatilho, abra a lista de parâmetros Avançados e selecione os parâmetros desejados.

  8. Quando estiver pronto, salve o fluxo de trabalho. Selecione Salvar na barra de ferramentas do designer.

    Esta etapa gera o URL que é possível usar depois para enviar uma solicitação que dispara o fluxo de trabalho.

  9. Para copiar o URL gerado, selecione o ícone de cópia ao lado do URL.

    Captura de tela mostrando o fluxo de trabalho de consumo, o gatilho de requisição e o botão de cópia de URL selecionados.

    Observação

    Se quiser incluir o símbolo de hashtag ou libra (#) no URI ao fazer uma chamada para o gatilho de Solicitação, use esta versão codificada: %25%23

Agora, continue criando seu fluxo de trabalho adicionando outra ação como a próxima etapa. Por exemplo, você pode responder à solicitação adicionando uma ação de Resposta, que pode ser usada para retornar uma resposta personalizada e é descrita posteriormente neste artigo.

Observação

Seu fluxo de trabalho mantém uma solicitação de entrada aberta apenas por tempo limitado. Supondo que seu fluxo de trabalho também inclua uma ação de Resposta, se o fluxo de trabalho não retornar uma resposta ao chamador após esse período expirar, seu fluxo de trabalho retornará o status 504 GATEWAY TIMEOUT para o chamador. Se o fluxo de trabalho não incluir uma ação de Resposta, o fluxo de trabalho retornará imediatamente o status 202 ACCEPTED para o chamador.

Para obter informações sobre segurança, autenticação e criptografia para chamadas de entrada para seu fluxo de trabalho, como TLS (Transport Layer Security),OAuth com Microsoft Entra ID, SAS (Assinaturas de Acesso Compartilhado), expor seu recurso de aplicativo lógico com o Gerenciamento de API do Azure ou restringir os endereços IP que originam chamadas de entrada, consulte o Access para chamadas de entrada para gatilhos baseados em solicitação.

Saídas do gatilho

A tabela a seguir lista as saídas do gatilho de solicitação.

Nome da propriedade JSON Tipo de dados Descrição
headers Objeto Um objeto JSON que descreve os cabeçalhos da solicitação
body Objeto Um objeto JSON que descreve o conteúdo do corpo da solicitação

Adicionar uma ação de resposta

Ao usar o gatilho Solicitação para receber solicitações de entrada, você pode modelar a resposta e enviar os resultados da carga útil de volta para o chamador usando a ação interna Resposta, que funciona apenas com o gatilho Solicitação. Essa combinação com o gatilho de solicitação e a ação de resposta cria o padrão solicitação-resposta. Com exceção dos loops Para cada e Até e branches paralelos, é possível adicionar a ação de Resposta em qualquer lugar no seu fluxo de trabalho.

Importante

  • Se a ação resposta incluir os cabeçalhos a seguir, os Aplicativos Lógicos do Azure removerão automaticamente esses cabeçalhos da mensagem de resposta gerada sem mostrar nenhum aviso ou erro. Os Aplicativos Lógicos do Azure não incluem esses cabeçalhos, embora o serviço não impeça você de salvar fluxos de trabalho que tenham uma ação de resposta com esses cabeçalhos.

    • Allow
    • Os cabeçalhos Content-* com exceção de Content-Disposition, Content-Encoding e Content-Type ao usar as operações POST e PUT, mas não são incluídos para operações GET
    • Cookie
    • Expires
    • Last-Modified
    • Set-Cookie
    • Transfer-Encoding
  • Se você tiver uma ou mais ações de resposta em um fluxo de trabalho complexo com branches, verifique se a o fluxo de trabalho processa, pelo menos, uma ação de resposta durante o runtime. Caso contrário, se todas as ações de resposta forem ignoradas, o chamador receberá o erro 502 Gateway Inválido, mesmo que o fluxo de trabalho seja concluído com êxito.

  • Em um fluxo de trabalho sem estado do aplicativo lógico Standard, a ação Resposta deve aparecer por último no fluxo de trabalho. Se a ação aparecer em qualquer outro lugar, os Aplicativos Lógicos do Azure não executarão a ação até que todas as outras ações terminem de ser executadas.

  1. No portal do Azure, abra o recurso de aplicativo lógico de Consumo.

  2. No menu da barra lateral, em Ferramentas de Desenvolvimento, selecione o designer para abrir o fluxo de trabalho.

    Este fluxo de trabalho de exemplo usa o gatilho de solicitação adicionado na seção anterior.

  3. Adicione a ação interna resposta ao fluxo de trabalho seguindo as etapas gerais para adicionar uma ação.

  4. Na caixa de informações de ação de Resposta, adicione os valores necessários para a mensagem de resposta.

    Nome da propriedade Nome da propriedade JSON Obrigatório Descrição
    Código de status statusCode Sim O código de status a ser retornado na resposta
    Cabeçalhos headers Não Um objeto JSON que descreve um ou mais cabeçalhos a serem incluídos na resposta
    Corpo body Não O corpo da resposta

    Quando você seleciona dentro de qualquer campo de texto, obtém as opções para abrir a lista de conteúdo dinâmico (ícone relâmpago) ou o editor de expressão (ícone de função). Ao escolher a lista de conteúdo dinâmico, você pode selecionar saídas disponíveis em etapas anteriores no fluxo de trabalho. Se você especificou um esquema no gatilho De solicitação , as propriedades do esquema também aparecerão na lista de conteúdo dinâmico e estarão disponíveis para uso no fluxo de trabalho.

    Por exemplo, para a caixa Cabeçalhos, use Tipo de Conteúdo como o nome da chave e defina o valor da chave como aplicativo/json, conforme mencionado anteriormente neste artigo. Para a caixa Corpo, abra a lista de conteúdo dinâmico e selecione a saída do corpo do gatilho.

    Captura de tela mostrando o portal do Azure, o fluxo de trabalho de consumo e as informações de ação de resposta.

    Para exibir os cabeçalhos no formato JSON, selecione Alternar para exibição de texto.

    Captura de tela mostrando o portal do Azure, fluxo de trabalho de Consumo e os cabeçalhos de ação de Resposta na exibição Alternar para texto.

  5. Se houver outros parâmetros para a ação, abra a lista de parâmetros Avançados e selecione os parâmetros desejados.

  6. Quando terminar, salve o fluxo de trabalho. Selecione Salvar na barra de ferramentas do designer.

Testar seu fluxo de trabalho

Para disparar seu fluxo de trabalho, envie uma solicitação HTTP para a URL gerada para o gatilho de solicitação, incluindo o método que o gatilho de solicitação espera, usando sua ferramenta de solicitação HTTP e suas instruções.

Para obter mais informações sobre a definição JSON subjacente do gatilho e como chamar esse gatilho, consulte estes artigos: Tipo de gatilho de solicitação e Chamar, acionar ou aninhar fluxos de trabalho com endpoints HTTP no Azure Logic Apps.

Segurança e autenticação

Em um Fluxo de trabalho de aplicativo lógico padrão que começa com o Gatilho de solicitação (mas não um gatilho de webhook), você pode usar o provisionamento do Azure Functions para autenticar chamadas de entrada enviadas para o ponto de extremidade criado por esse gatilho usando uma identidade gerenciada. Essa provisão também é conhecida como Autenticação Fácil. Para obter mais informações, consulte Disparar fluxos de trabalho em Aplicativos lógicos Standard com o Easy Auth.

Para obter mais informações sobre segurança, autorização e criptografia para chamadas de entrada para o fluxo de trabalho do aplicativo lógico, como TLS (Transport Layer Security),Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), expondo seu aplicativo lógico com o Gerenciamento de API do Azure ou restringindo os endereços IP que originam chamadas de entrada, consulte o Access para chamadas de entrada para gatilhos baseados em solicitação.