Partilhar via


Personalizar um ponto de extremidade HTTP no Azure Functions

Neste artigo, você aprenderá a criar APIs altamente escaláveis com o Azure Functions personalizando um gatilho HTTP para lidar com ações específicas em seu design de API. O Azure Functions inclui uma coleção de gatilhos e associações HTTP internos, que facilitam 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 expandir sua API integrando-a com proxies do Azure Functions e configurando APIs simuladas. Como essas tarefas são realizadas sobre o 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 na lógica da API.

Importante

Os proxies do Azure Functions são um recurso herdado para as versões 1.x a 3.x do tempo de execução do Azure Functions. O suporte para proxies pode ser reativado na versão 4.x para que você atualize com êxito seus aplicativos de função para a versão de tempo de execução mais recente. Assim que possível, você deve alternar para integrar seus aplicativos de função com o Gerenciamento de API do Azure. O API Management permite-lhe tirar partido de um conjunto de funcionalidades mais completo para definir, proteger, gerir e rentabilizar as suas APIs baseadas em Funções. Para obter mais informações, consulte Integração de gerenciamento de API.

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

Pré-requisitos

  • Uma ferramenta de teste HTTP que mantém seus dados seguros. Para obter mais informações, consulte 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 ainda não o fez, conclua estes passos agora para criar a sua aplicação de funções.

Depois de criar este aplicativo de função, você pode seguir os procedimentos neste artigo.

Iniciar sessão no Azure

Inicie sessão no portal do Azure com a sua conta do Azure.

Personalizar a sua função HTTP

Por padrão, você configura sua função de gatilho 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 o 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 esquerdo e, em seguida, selecione HTTP (req) em Trigger.

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

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

    Campo Valores de exemplo Description
    Modelo de rota hello Determina qual a rota utilizada para invocar esta função
    Nível de autorização Anónimo Opcional: torna a sua função acessível sem uma chave de API
    Métodos HTTP selecionados GET Permite apenas a utilização dos métodos HTTP selecionados para invocar esta função

    Como uma configuração global manipula o prefixo do /api caminho base no modelo de rota, não é necessário defini-lo aqui.

  3. Selecione Guardar.

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

Testar a API

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

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

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

  3. Copie o URL para um novo separador do navegador ou para o seu cliente REST preferido. Os navegadores usam GET por padrão.

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

  5. Prima Enter para confirmar que a sua função está a funcionar. Você deve ver a resposta, "Olá João".

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

Descrição geral dos Proxies

Na próxima seção, você apresenta sua API por meio de um proxy. Os proxies do Azure Functions permitem que você encaminhe solicitações para outros recursos. Você define um ponto de extremidade HTTP como faria com um gatilho HTTP. No entanto, em vez de escrever código para executar quando esse ponto de extremidade é chamado, você fornece 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 é útil se você deseja criar sua API como microsserviços.

Um proxy pode apontar para qualquer recurso HTTP, como, por exemplo:

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

Nota

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

Criar o seu primeiro proxy

Nesta seção, você cria um novo proxy, que serve como um frontend para sua API geral.

Configurar o ambiente de frontend

Repita as etapas em Criar um aplicativo de função para criar um novo aplicativo de função no qual você cria seu proxy. O URL deste novo aplicativo serve como frontend para nossa API, e o aplicativo de função que você editou anteriormente serve como backend:

  1. Navegue para a nova aplicação de funções de front-end no portal.

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

  3. Selecione a guia Configurações do aplicativo , onde 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ção de back-end, como <YourBackendApp>.azurewebsites.net.

    Esse valor faz parte da URL que você copiou anteriormente quando testou sua função HTTP. Mais tarde, você fará referência a essa configuração na configuração.

    Nota

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

  5. Selecione Aplicar para salvar a nova configuração. No separador Definições da aplicação, selecione Aplicar e, em seguida, selecione Confirmar para reiniciar a aplicação funcional.

Criar um proxy no frontend

  1. Navegue de volta para seu 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 Valores de exemplo Description
    Name HelloProxy Um nome amigável utilizado apenas para gestão
    Modelo de rota /api/remotehello Determina qual a rota utilizada para invocar este proxy
    URL de back-end https://%HELLO_HOST%/api/hello Especifica o ponto final para o qual o pedido deve ser transmitido 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 /api caminho base, você deve incluí-lo no modelo de rota. A %HELLO_HOST% sintaxe faz referência à configuração do aplicativo que você criou anteriormente. O URL resolvido aponta para a sua função original.

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

    • Para uma função anónima, utilize: 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 fictícia

Em seguida, você usa 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. Mais tarde no desenvolvimento, você pode criar um novo aplicativo de função que suporte 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ção no portal do Azure. Selecione Recursos da plataforma e, em seguida, 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 para todos os seus proxies. Se você usar um dos métodos de implantação do Functions, manterá esse arquivo no controle do código-fonte. Para obter mais informações sobre esse arquivo, consulte Configuração avançada de proxies.

    Seu 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, GetUserByNameque omite a backendUri propriedade. Em vez de chamar outro recurso, ele modifica a resposta padrão dos 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, onde 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 <YourProxyApp>.azurewebsites.net/api/users/{username} ponto de extremidade com um navegador ou seu cliente REST favorito. Substitua {username} por um valor de cadeia de caracteres que represente um nome de usuário.

Neste artigo, você aprendeu como criar e personalizar uma API com o Azure Functions. Você também aprendeu como reunir várias APIs, incluindo APIs simuladas, como uma superfície de API unificada. Pode utilizar estas técnicas para criar APIs com qualquer nível de complexidade, tudo isto enquanto as executa no modelo de computação sem servidor fornecido pelas Funções do Azure.

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