Compartilhar via


Personalizar um ponto de extremidade HTTP no Azure Functions

Neste artigo, você aprenderá a criar APIs altamente escalonáveis com o Azure Functions personalizando um gatilho de HTTP para lidar com ações específicas em seu design de API. O Azure Functions inclui uma coleção de associações e gatilhos de HTTP internos, o que facilita a criação de um ponto de extremidade em vários idiomas, incluindo Node.js, C#e muito mais. Você também se prepara para aumentar sua API integrando-a a proxies do Azure Functions e configurando APIs simuladas. Como essas tarefas são realizadas em cima do ambiente de computação sem servidor do Functions, você não precisa se preocupar com o dimensionamento de recursos. Em vez disso, você pode apenas se concentrar em sua lógica de API.

Importante

Os proxies do Azure Functions são um recurso herdado para versões 1.x a 3.x do Azure Functions runtime. O suporte para proxies pode ser reabilitado na versão 4.x para atualizar com sucesso seus aplicativos de funções para a última versão do runtime. Assim que possível, você deverá alternar para integrar seus aplicativos de funções ao Gerenciamento de API do Azure. O Gerenciamento de API permite aproveitar um conjunto mais completo de recursos para definir, proteger, gerenciar e monetizar as APIs baseadas no Functions. Para obter mais informações, consulte Integração do Gerenciamento de API.

Para saber como reabilitar o suporte a proxies no Functions versão 4.x, consulte Reabilitar proxies no Functions v4.x.

Pré-requisitos

  • Uma ferramenta de teste para HTTP que mantém seus dados seguros. Para obter mais informações, confira Ferramentas de teste HTTP.

Este artigo usa como ponto de partida os recursos criados em Criar sua primeira função no portal do Azure. Se você ainda não fez isso, conclua estas etapas agora para criar seu aplicativo de função.

Depois de criar esse aplicativo de funções, você pode seguir os procedimentos neste artigo.

Entrar no Azure

Entre no portal do Azure com sua conta do Azure.

Personalizar sua função HTTP

Por padrão, você configura sua função de gatilho de HTTP para aceitar qualquer método HTTP. Nesta seção, você modifica a função para responder somente a solicitações GET com /api/hello. Você pode usar a URL padrão, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>:

  1. Navegue até sua função no Portal do Azure. Selecione Integração no menu à esquerda e escolha HTTP (req) em Gatilho.

    Captura de tela que mostra como editar as configurações de gatilho de HTTP de uma função.

  2. Use as configurações do gatilho HTTP conforme especificado na tabela a seguir.

    Campo Valor de exemplo Descrição
    Modelo de rota hello Determina qual rota pode ser usada para chamar essa função
    Nível de autorização Anônima Opcional: torna sua função acessível sem uma chave de API
    Métodos HTTP selecionados GET Permite que apenas os métodos HTTP selecionados possam ser usados para chamar essa função

    Como uma configuração global manipula o prefixo de caminho base /api no modelo de rota, você não precisa defini-lo aqui.

  3. Selecione Salvar.

Para obter mais informações sobre como personalizar funções HTTP, consulte visão geral de gatilhos de HTTP e associações do Azure Functions.

Testar sua API

Em seguida, teste sua função para ver como ela funciona com a nova superfície de API.

  1. Na página de Função, selecione Código + Teste no menu à esquerda.

  2. Selecione Obter URL da função no menu superior e copie a URL. Confirme se sua função agora usa o caminho /api/hello.

  3. Copie a URL para uma nova guia do navegador ou seu cliente REST preferido. Os navegadores usam GET por padrão.

  4. Adicione parâmetros à cadeia de consulta na URL. Por exemplo, /api/hello/?name=John.

  5. Pressione Enter para confirmar se sua função está funcionando. Você verá a resposta “Hello John”.

  6. Você também pode chamar o ponto de extremidade com outro método HTTP para confirmar se a função não foi executada. Para métodos HTTP diferentes de GET, você precisa usar uma ferramenta de teste HTTP segura.

Visão geral dos proxies

Na próxima seção, você verá sua API por meio de um proxy. Os proxies do Azure Functions permitem encaminhar solicitações para outros recursos. Você define um ponto de extremidade HTTP como faria com um gatilho de HTTP. Porém, em vez de programar um código para execução quando o ponto de extremidade for chamado, forneça uma URL para uma implementação remota. Isso permite que você componha várias fontes de API em uma única superfície de API, o que é mais fácil para os clientes consumirem e será útil se você quiser criar sua API como microsserviços.

Um proxy pode apontar para qualquer recurso HTTP, como:

Para saber mais sobre proxies do Azure Functions, consulte [Trabalhar com proxies herdados].

Observação

Os proxies do Azure Functions estão disponíveis nas versões 1.x a 3.x do Azure Functions.

Criar seu primeiro proxy

Nesta seção, você cria um novo proxy, que servirá como um front-end para sua API geral.

Configurar o ambiente de front-end

Repita as etapas em Criar um aplicativo de funções para criar um novo aplicativo de funções no qual você cria seu proxy. A URL desse novo aplicativo serve como front-end para nossa API e o aplicativo de funções editado anteriormente serve como um back-end:

  1. Navegue até seu novo aplicativo de função front-end no portal.

  2. Expanda Configurações e selecione Variáveis de ambiente.

  3. Selecione a guia Configurações do aplicativo, em que os pares chave/valor são armazenados.

  4. Selecione + Adicionar para criar uma nova configuração. Insira HELLO_HOST para seu Nome e defina seu Valor como o host do seu aplicativo de funções de back-end, como <YourBackendApp>.azurewebsites.net.

    Esse valor faz parte da URL que você copiou anteriormente quando testou sua função HTTP. Posteriormente, você referencia essa configuração na configuração.

    Observação

    É recomendável que você use as configurações do aplicativo para a configuração do host para impedir uma dependência de ambiente codificada para o proxy. Usar configurações do aplicativo significa que você pode mover a configuração do proxy entre ambientes, e as configurações de aplicativo específicas ao ambiente serão aplicadas.

  5. Selecione Aplicar para salvar a nova configuração. Na guia Configurações do aplicativo, selecione Aplicar e, em seguida, selecione Confirmar para reiniciar o aplicativo de funções.

Criar um proxy no front-end

  1. Navegue novamente até o aplicativo de função front-end no portal.

  2. No menu à esquerda, expanda Funções, selecione Proxies e, em seguida, selecione Adicionar.

  3. Na página Novo proxy, use as configurações na tabela a seguir e selecione Criar.

    Campo Valor de exemplo Descrição
    Nome HelloProxy Um nome amigável usado apenas para gerenciamento
    Modelo de rota /api/remotehello Determina qual rota pode ser usada para chamar esse proxy
    URL do back-end https://%HELLO_HOST%/api/hello Especifica o ponto de extremidade ao qual a solicitação deve ser transmitida por proxy

    Captura de tela que mostra as configurações na página Novo proxy.

    Como os proxies do Azure Functions não fornecem o prefixo de caminho base /api, você deve incluí-lo no modelo de rota. A sintaxe %HELLO_HOST% referencia a configuração do aplicativo que você criou anteriormente. A URL resolvida aponta para sua função original.

  4. Teste seu novo proxy copiando a URL do proxy e testando-o no navegador ou com seu cliente HTTP favorito:

    • Para uma função anônima, use: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Para uma função com autorização, use: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Criar uma API de simulação

Em seguida, use um proxy para criar uma API simulada para sua solução. Esse proxy permite que o desenvolvimento do cliente progrida, sem a necessidade de implementar totalmente o back-end. Posteriormente no desenvolvimento, você pode criar um novo aplicativo de funções que dê suporte a essa lógica e redirecionar seu proxy para ele:

  1. Para criar essa API simulada, crie um novo proxy, desta vez usando o Editor do Serviço de Aplicativo. Para começar, navegue até seu aplicativo de funções no portal do Azure. Selecione Recursos da Plataforma e selecione Editor do Serviço de Aplicativo em Ferramentas de Desenvolvimento.

    O Editor do Serviço de Aplicativo é aberto em uma nova guia.

  2. Selecione proxies.json no painel esquerdo. Este arquivo armazena a configuração de todos os seus proxies. Se você usar um dos métodos de implantação do Functions, manterá o controle de origem desse arquivo. Para obter mais informações sobre esse arquivo, consulte Configuração avançada de Proxies.

    O arquivo proxies.json deve aparecer da seguinte maneira:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            }
        }
    }
    
  3. Adicione sua API simulada. Substitua o arquivo proxies.json pelo seguinte código:

    {
        "$schema": "http://json.schemastore.org/proxies",
        "proxies": {
            "HelloProxy": {
                "matchCondition": {
                    "route": "/api/remotehello"
                },
                "backendUri": "https://%HELLO_HOST%/api/hello"
            },
            "GetUserByName" : {
                "matchCondition": {
                    "methods": [ "GET" ],
                    "route": "/api/users/{username}"
                },
                "responseOverrides": {
                    "response.statusCode": "200",
                    "response.headers.Content-Type" : "application/json",
                    "response.body": {
                        "name": "{username}",
                        "description": "Awesome developer and master of serverless APIs",
                        "skills": [
                            "Serverless",
                            "APIs",
                            "Azure",
                            "Cloud"
                        ]
                    }
                }
            }
        }
    }
    

    Esse código adiciona um novo proxy, GetUserByName, que omite a propriedade backendUri. Em vez de chamar outro recurso, ele modifica a resposta padrão de proxies do Azure Functions usando uma substituição de resposta. Você também pode usar substituições de solicitação e resposta com uma URL de back-end. Essa técnica é útil quando você faz proxy para um sistema herdado, em que talvez seja necessário modificar cabeçalhos, parâmetros de consulta e assim por diante. Para obter mais informações sobre substituições de solicitação e resposta, consulte Modificar solicitações e respostas.

  4. Teste sua API simulada chamando o ponto de extremidade <YourProxyApp>.azurewebsites.net/api/users/{username} com um navegador ou seu cliente REST favorito. Substitua {username} por um valor de cadeia de caracteres que representa um nome de usuário.

Neste artigo, você aprendeu a criar e personalizar uma API com o Azure Functions. Você também aprendeu a reunir várias APIs, incluindo APIS simuladas, como uma superfície de API unificada. Use essas técnicas para compilar APIs de qualquer complexidade durante a execução no modelo de computação sem servidor fornecido pelo Azure Functions.

Para obter mais informações sobre como desenvolver sua API: