Visão geral de gatilhos e associações HTTP no Azure Functions

É possível invocar o Azure Functions com solicitações HTTP para criar APIs sem servidor e responder a webhooks.

Ação Tipo
Executar uma função a partir de uma solicitação HTTP Gatilho
Retornar uma resposta HTTP de uma função Associação de saída

Instalar a extensão

O pacote NuGet da extensão instalado depende do modo C# usado no aplicativo de funções:

As funções são executadas em um processo de trabalho do C# isolado. Para saber mais, confira o Guia para executar C# do Azure Functions em um processo de trabalho isolado.

A funcionalidade da extensão varia de acordo com a versão da extensão:

Adicione a extensão ao seu projeto instalando o pacote NuGet, versão 3.x.

Observação

Um pacote de extensão adicional é necessário para ASP.NET Core integração no .NET isolado

Instalar pacote

A partir da versão Funções 2.x, a extensão HTTP faz parte de um pacote de extensão, que é especificado no arquivo de projeto host.json. Para saber mais, confira pacotes de extensão.

Esta versão da extensão já deve estar disponível para seu aplicativo de funções com o pacote de extensão na versão 2.x.

configurações de host.json

Esta seção descreve as definições de configuração disponíveis para a associação nas versões 2.x e superiores. As configurações no arquivo host.json se aplicam a todas as funções em uma instância do aplicativo de funções. O arquivo host.json de exemplo abaixo contém apenas as configurações das versões 2.x e superiores para a associação. Para saber mais sobre as definições de configuração do aplicativo de funções nas versões 2.x e superiores, confira a referência de host.json para o Azure Functions.

Observação

Para obter uma referência de host.json no Functions 1.x, confira Referência de host.json para o Azure Functions 1.x.

{
    "extensions": {
        "http": {
            "routePrefix": "api",
            "maxOutstandingRequests": 200,
            "maxConcurrentRequests": 100,
            "dynamicThrottlesEnabled": true,
            "hsts": {
                "isEnabled": true,
                "maxAge": "10"
            },
            "customHeaders": {
                "X-Content-Type-Options": "nosniff"
            }
        }
    }
}
Propriedade Padrão Descrição
customHeaders nenhum Permite que você defina os cabeçalhos personalizados na resposta HTTP. O exemplo anterior adiciona o cabeçalho X-Content-Type-Options à resposta para evitar a detecção de tipo de conteúdo. Esse cabeçalho personalizado se aplica a todas as funções disparadas por HTTP no aplicativo de funções.
dynamicThrottlesEnabled true* Quando habilitada, essa configuração faz o pipeline de processamento de solicitação verificar periodicamente os contadores de desempenho do sistema como connections/threads/processes/memory/cpu/etc e, se algum desses contadores tiver excedido um alto limite interno (80%), as solicitações serão rejeitadas com a resposta 429 "Too Busy" até que os contadores retornem aos níveis normais.
*O padrão em um Plano de consumo é true. O padrão em um Plano dedicado é false.
hsts não habilitado Quando isEnabled é definido como true, o isEnabled é imposto, conforme definido na true. O exemplo acima também define a propriedade maxAge como 10 dias. As propriedades suportadas são hsts :
PropriedadeDescrição
excludedHostsUma matriz de cadeia de caracteres de nomes de host para a qual o cabeçalho HSTS não foi adicionado.
includeSubDomainsValor booliano que indica se o parâmetro includeSubDomain do cabeçalho Strict-Transport-Security está habilitado.
maxAgeCadeia de caracteres que define o parâmetro max-age do cabeçalho Strict-Transport-Security.
pré-carregarValor booliano que indica se o parâmetro pré-carregado do cabeçalho Strict-Transport-Security está habilitado.
maxConcurrentRequests 100* O número máximo de funções HTTP que serão executadas em paralelo. Esse valor permite controlar a simultaneidade, o que pode ajudar a gerenciar a utilização de recursos. Por exemplo, talvez você tenha uma função HTTP que use uma grande quantidade de recursos do sistema (memória/cpu/soquetes), de modo que ela causará problemas quando a simultaneidade for muito alta. Ou talvez você tenha uma função que faça solicitações de saída a um serviço de terceiro, e essas chamadas precisem ser limitadas por taxa. Nesses casos, aplicar uma limitação aqui pode ajudar.
*O padrão para um Plano de consumo é 100. O padrão para um Plano dedicado é não associado (-1).
maxOutstandingRequests 200* O número máximo de solicitações pendentes mantidas em um dado momento. Esse limite inclui solicitações que estão na fila, mas não iniciaram a execução, bem como qualquer execução em andamento. Quaisquer solicitações recebidas acima desse limite são rejeitadas com uma resposta "Muito ocupado" 429. Isso permite que os chamadores empreguem estratégias de repetição com base em tempo e também ajuda você a controlar as latências máximas de solicitação. Isso controla apenas o enfileiramento que ocorre no caminho de execução do host de script. Outras filas, como a fila de solicitação ASP.NET, ainda estarão vigor e não serão afetadas por essa configuração.
*O padrão para um Plano de consumo é 200. O padrão para um Plano dedicado é não associado (-1).
routePrefix api O prefixo da rota que se aplica a todas as rotas. Use uma cadeia de caracteres vazia para remover o prefixo padrão.

Próximas etapas