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

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

Este guia de instruções mostra a criação de um fluxo de trabalho de aplicativo lógico que pode receber e lidar com uma solicitação HTTPS de entrada ou chamada de outro serviço usando o gatilho interno Solicitação. Quando seu fluxo de trabalho usa esse gatilho, você pode responder à solicitação HTTPS usando a ação interna Resposta.

Nota

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

Por exemplo, esta lista descreve algumas tarefas que seu fluxo de trabalho pode executar quando você usa o gatilho de solicitação e a ação de resposta:

  • Receba e responda a uma solicitação HTTPS de dados em um banco de dados local.

  • Receba e responda a uma solicitação HTTPS enviada de outro fluxo de trabalho de aplicativo lógico.

  • Acione uma execução de fluxo de trabalho quando um evento de webhook externo acontecer.

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

Pré-requisitos

  • Uma conta e subscrição do Azure. Se não tiver uma subscrição, pode inscrever-se numa conta gratuita do Azure.

  • O fluxo de trabalho do aplicativo lógico onde você deseja receber a solicitação HTTPS de entrada. Para iniciar seu fluxo de trabalho com um gatilho de solicitação, você precisa começar com um fluxo de trabalho em branco. Para usar a ação Resposta, seu fluxo de trabalho deve começar com o gatilho Solicitação.

Adicionar um gatilho de solicitação

O gatilho Request cria um ponto de extremidade chamável manualmente que lida apenas com solicitações de entrada por HTTPS. Quando o chamador envia uma solicitação para esse ponto de extremidade, o gatilho Request é acionado e executa o fluxo de trabalho. Para obter informações sobre como chamar esse gatilho, revise Chamar, disparar ou aninhar fluxos de trabalho com pontos de extremidade HTTPS nos Aplicativos Lógicos do Azure.

  1. No portal do Azure, abra seu aplicativo lógico de consumo e fluxo de trabalho em branco no designer.

  2. No designer, siga estas etapas gerais para localizar e adicionar o gatilho interno de solicitação chamado Quando uma solicitação HTTP é recebida.

  3. Depois que a caixa de informações do gatilho for exibida, forneça as seguintes informações, conforme necessário:

    Nome da propriedade Nome da propriedade JSON Obrigatório Descrição
    URL DA PUBLICAÇÃO HTTP {nenhum} Sim A URL do ponto de extremidade que é gerada depois que você salva seu fluxo de trabalho e é usada para enviar uma solicitação que aciona 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, seu fluxo de trabalho pode analisar, consumir e passar saídas do gatilho Request para seu fluxo de trabalho.

    Se você não tiver um esquema JSON, poderá gerar o esquema a partir de uma carga útil de exemplo usando o recurso Usar carga útil de exemplo para gerar esquema .

    O exemplo a seguir mostra um esquema JSON de exemplo:

    Screenshot showing Consumption workflow and Request trigger with example JSON schema.

    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 mostra um lembrete para incluir o cabeçalho Content-Type em sua solicitação e definir esse valor de cabeçalho como application/json. Para obter mais informações, consulte Manipular tipos de conteúdo.

    Screenshot showing Consumption workflow, Request trigger, and reminder to include

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

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

    Para gerar um esquema JSON baseado na carga útil esperada (dados), você pode usar uma ferramenta como JSONSchema.net ou seguir estas etapas:

    1. No gatilho Solicitação, selecione Usar carga útil de exemplo para gerar esquema.

      Screenshot showing Consumption workflow, Request trigger, and

    2. Insira a carga útil da amostra e selecione Concluído.

      Screenshot showing Consumption workflow, Request trigger, and sample payload entered to generate schema.

      O exemplo a seguir mostra a carga útil de exemplo:

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

    1. Para impor que a mensagem de entrada tenha os mesmos campos exatos que o esquema descreve, no esquema, adicione a required propriedade e especifique os campos obrigatórios. Adicione a addtionalProperties propriedade e defina o valor como false.

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

      {
         "properties": {
           "msg": {
              "type": "string"
           }
         },
         "type": "object",
         "required": ["msg"],
         "additionalProperties": false
      }
      
    2. Na barra de título do gatilho Solicitação, selecione o botão de reticências (...).

    3. Nas configurações do gatilho, ative Validação de esquema e selecione Concluído.

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

  5. Para adicionar outras propriedades ou parâmetros ao gatilho, abra a lista Adicionar novo parâmetro e selecione os parâmetros que deseja adicionar.

    Nome da propriedade Nome da propriedade JSON Obrigatório Descrição
    Método method Não O método que a solicitação de entrada deve usar para chamar o aplicativo lógico
    Caminho relativo relativePath Não O caminho relativo para o parâmetro que a URL do ponto de extremidade do aplicativo lógico pode aceitar

    O exemplo a seguir adiciona a propriedade Method :

    Screenshot showing Consumption workflow, Request trigger, and adding the

    A propriedade Method aparece no gatilho para que você possa selecionar um método na lista.

    Screenshot showing Consumption workflow, Request trigger, and the

  6. Quando estiver pronto, salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

    Esta etapa gera a URL que você pode usar para enviar uma solicitação que aciona o fluxo de trabalho.

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

    Screenshot showing Consumption workflow, Request trigger, and URL copy button selected.

    Nota

    Se quiser incluir o hash ou o símbolo de libra (#) no URI quando fizer uma chamada ao Acionador de pedidos, utilize esta versão codificada: %25%23

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

Nota

Seu fluxo de trabalho mantém uma solicitação de entrada aberta apenas por um 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 depois que esse tempo 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 Resposta, o fluxo de trabalho retornará imediatamente o status 202 ACEITO para o chamador.

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

Saídas de gatilho

A tabela a seguir lista as saídas do gatilho Request:

Nome da propriedade JSON Tipo de dados Descrição
cabeçalhos Objeto Um objeto JSON que descreve os cabeçalhos da solicitação
corpo 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. Exceto dentro de loops Foreach e Until loops, e ramificações paralelas, você pode adicionar a ação Resposta em qualquer lugar do seu fluxo de trabalho.

Importante

  • Se sua ação de Resposta incluir os seguintes cabeçalhos, 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 incluirão 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
    • Content-*cabeçalhos, exceto para Content-Disposition, e quando você usa operações POST e Content-Type PUT, Content-Encodingmas não estã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 ramificações, certifique-se de que o fluxo de trabalho processe pelo menos uma ação de Resposta durante o tempo de execução. Caso contrário, se todas as ações de resposta forem ignoradas, o chamador receberá um erro 502 Bad Gateway , mesmo que o fluxo de trabalho seja concluído com êxito.

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

  1. No designer de fluxo de trabalho, siga estas etapas gerais para localizar e adicionar a ação interna Resposta chamada Resposta.

    Para simplificar, os exemplos a seguir mostram um gatilho Request recolhido.

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

    Nome da propriedade Nome da propriedade JSON Obrigatório Descrição
    Código de Estado 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 organismo de resposta

    Quando você seleciona dentro de qualquer campo de texto, a lista de conteúdo dinâmico é aberta automaticamente. Em seguida, você pode selecionar tokens que representam quaisquer saídas disponíveis de etapas anteriores no fluxo de trabalho. As propriedades do esquema especificado também aparecem nesta lista de conteúdo dinâmico. Você pode selecionar essas propriedades para usar em seu fluxo de trabalho.

    Por exemplo, no campo Cabeçalhos , inclua Content-Type como o nome da chave e defina o valor da chave como application/json , conforme mencionado anteriormente neste artigo. Para a caixa Corpo, você pode selecionar a saída do corpo do gatilho na lista de conteúdo dinâmico.

    Screenshot showing Azure portal, Consumption workflow, and Response action information.

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

    Screenshot showing Azure portal, Consumption workflow, and Response action headers in

  3. Para adicionar mais propriedades para a ação, como um esquema JSON para o corpo da resposta, na lista Adicionar novo parâmetro , selecione os parâmetros que deseja adicionar.

  4. Quando terminar, salve seu fluxo de trabalho. Na barra de ferramentas do estruturador, selecione Guardar.

Testar o fluxo de trabalho

Para testar seu fluxo de trabalho, envie uma solicitação HTTP para a URL gerada. Por exemplo, você pode usar uma ferramenta como Postman para enviar a solicitação HTTP. Para obter mais informações sobre a definição JSON subjacente do gatilho e como chamá-lo, consulte estes tópicos, Tipo de gatilho de solicitação e Fluxos de trabalho de chamada, gatilho ou aninhamento com pontos de extremidade HTTP em Aplicativos Lógicos do Azure.

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 a provisão do Azure Functions para autenticar chamadas de entrada enviadas para o ponto de extremidade criado por esse gatilho usando uma identidade gerenciada. Esta disposição é também conhecida como "Autenticação Fácil". Para obter mais informações, consulte Acionar fluxos de trabalho em aplicativos lógicos padrão com 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), anteriormente conhecido como SSL (Secure Sockets Layer), Autenticação Aberta do Microsoft Entra ID (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 Acesso seguro e dados - Acesso de entrada para chamadas de entrada a gatilhos baseados em solicitação.

Próximos passos