Personalize um ponto final HTTP em Funções do Azure

Neste artigo, você aprende como Funções do Azure permite-lhe construir APIs altamente escaláveis. Funções do Azure vem com uma coleção de gatilhos e encadernações HTTP incorporadas, que facilitam a autoria de um ponto final em várias línguas, incluindo Node.js, C#, e muito mais. Neste artigo, você irá personalizar um gatilho HTTP para lidar com ações específicas no seu design API. Você também se preparará para o crescimento da sua API, integrando-a com proxies Funções do Azure e criando APIs simulados. Estas tarefas são realizadas no topo do ambiente de computação sem servidor de Funções, para que não tenha que se preocupar em escalonar recursos - você pode apenas focar-se na sua lógica API.

Importante

Funções do Azure proxies é uma característica legado para as versões 1.x a 3.x do tempo de execução Funções do Azure. O suporte para proxies pode ser reativado na versão 4.x para que possa atualizar com sucesso as suas aplicações de função para a versão mais recente do tempo de execução. O mais rapidamente possível, deverá mudar para integrar as suas aplicações de função com o Azure Gestão de API. Gestão de API permite-lhe tirar partido de um conjunto mais completo de funcionalidades para definir, assegurar, gerir e rentabilizar as suas APIs baseadas em Funções. Para mais informações, consulte Gestão de API integração.

Para aprender como reativar o suporte de proxies na versão 4.x das Funções, consulte Ativar os proxies em Funções v4.x.

Pré-requisitos

Este tópico usa como ponto de partida os recursos criados na função Criar a primeira função a partir do portal do Azure. Se ainda não fez isso, conclua estes passos agora para criar a sua plicação de funções.

A função resultante será utilizada para o resto deste 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 predefinição, a função de gatilho HTTP está configurada para aceitar qualquer método HTTP. Também pode utilizar o URL predefinido, http://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>. Nesta secção, modifica a função para responder apenas aos pedidos GET com /api/hello.

  1. Navegue até à sua função no portal do Azure. Selecione Integração no menu esquerdo e, em seguida, selecione HTTP (req) no Gatilho.

    Personalizar uma função HTTP

  2. Utilize as definições do gatilho HTTP conforme especificado na tabela seguinte.

    Campo Valor da amostra 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

    Não incluiu o prefixo do /api caminho base no modelo de rota, porque é tratado por uma configuração global.

  3. Selecione Guardar.

Para obter mais informações sobre a personalização das funções HTTP, consulte Funções do Azure ligações HTTP.

Testar a API

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

  1. Na página de função, selecione Código + Teste a partir do menu esquerdo.

  2. Selecione Obter URL de função a partir do menu superior e copie o URL. Confirme que agora usa o /api/hello caminho.

  3. Copie o URL para um novo separador do browser ou para o seu cliente REST preferido.

    Os navegadores usam GET por padrão.

  4. Adicione parâmetros à cadeia de consulta no seu URL.

    Por exemplo, /api/hello/?name=John.

  5. Pressione a Entrada para confirmar que está a funcionar. Devias ver a resposta, "Olá John".

  6. Também pode tentar ligar para o ponto final com outro método HTTP para confirmar que a função não é executada. Para tal, utilize um cliente REST, como cURL, Carteiro ou Violinista.

Descrição geral dos Proxies

Na próxima secção, irás emergir a tua API através de um representante. Os Proxies de Funções do Azure permitem reencaminhar pedidos para outros recursos. Define um ponto final HTTP tal como com o gatilho HTTP. No entanto, em vez de escrever código para executar quando esse ponto final é chamado, você fornece um URL para uma implementação remota. Ao fazê-lo, permite-lhe compor várias fontes de API numa única superfície API, o que é fácil para os clientes consumirem, o que é útil se pretender construir a sua API como microserviços.

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

Para saber mais sobre proxies, veja Trabalhar com os Proxies de Funções do Azure.

Nota

Proxies está disponível em Funções do Azure versões 1.x a 3.x.

Criar o seu primeiro proxy

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

Configurar o ambiente de front-end

Repita os passos para criar uma aplicação de função para criar uma nova aplicação de função na qual irá criar o seu representante. O URL desta nova aplicação serve como frontend para a nossa API, e a aplicação de função que estava a editar anteriormente serve como backend.

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

  2. Selecione Configuração e escolha Definições de Aplicação.

  3. Desloque-se para as definições de Aplicação, onde os pares de chaves/valor são armazenados e crie uma nova definição com a chave HELLO_HOST. Defina o respetivo valor como o sistema anfitrião da sua aplicação de funções de back-end, como, por exemplo <YourBackendApp>.azurewebsites.net. Este valor faz parte do URL que copiou anteriormente ao testar a sua função HTTP. Vai fazer referência a esta definição na configuração mais à frente.

    Nota

    As definições da aplicação são recomendadas para a configuração do sistema anfitrião para evitar uma dependência de ambiente hard-coded 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.

  4. Selecione Guardar.

Criar um proxy no front-end

  1. Volte para a sua aplicação de função frontal no portal.

  2. No menu da esquerda, selecione Proxies e, em seguida, selecione Add.

  3. Na página Novo Proxy , utilize as definições na tabela seguinte e, em seguida, selecione Criar.

    Campo Valor da amostra Descrição
    Nome 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

    Criar um representante

    Funções do Azure Proxies não fornece o prefixo do /api caminho base, que deve ser incluído no modelo de rota. A %HELLO_HOST% sintaxe refere-se à definição de aplicação que criou anteriormente. O URL resolvido apontará para a sua função original.

  4. Experimente o seu novo representante copiando o URL de procuração e testando-o no navegador ou com o seu cliente HTTP favorito:

    • Para uma utilização de funções anónimas: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Para uma função com autorização: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Criar uma API fictícia

Em seguida, você usará um representante para criar uma API falsa para a sua solução. Este proxy permite que o desenvolvimento do cliente progrida, sem precisar do backend totalmente implementado. Mais tarde, pode criar uma nova aplicação de função, que suporta esta lógica e redireciona o seu representante para a presente.

Para criar esta API falsa, vamos criar um novo representante, desta vez usando o Serviço de Aplicações Editor. Para começar, navegue para a aplicação de funções no portal. Selecione funcionalidades da Plataforma e em Ferramentas de Desenvolvimento encontre Serviço de Aplicações Editor. O editor Serviço de Aplicações abre com uma nova conta.

Selecione proxies.json no painel de navegação esquerdo. Este ficheiro armazena a configuração para todos os seus proxies. Se utilizar um dos métodos de implantação de Funções, mantém este ficheiro no controlo de origem. Para saber mais sobre este ficheiro, veja Configuração avançada de proxies.

Se acompanhou até agora, o seu proxies.json deve parecer o seguinte:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HelloProxy": {
            "matchCondition": {
                "route": "/api/remotehello"
            },
            "backendUri": "https://%HELLO_HOST%/api/hello"
        }
    }
}

Em seguida, vai adicionar a sua API falsa. Substitua o ficheiro 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"
                    ]
                }
            }
        }
    }
}

Este código adiciona um novo representante, GetUserByNamesem a backendUri propriedade. Em vez de chamar outro recurso, modifica a resposta predefinida dos Proxies com uma substituição de resposta. Pedido e substituição de resposta também podem ser usados com um URL de backend. Esta técnica é útil quando procura um sistema antigo, onde pode ser necessário modificar cabeçalhos, parâmetros de consulta, e assim por diante. Para saber mais sobre substituições de pedido e resposta, veja Modificar pedidos e respostas nos Proxies.

Teste a sua API fictícia, chamando o ponto final <YourProxyApp>.azurewebsites.net/api/users/{username} com um browser ou com o seu cliente REST favorito. Não se esqueça de substituir {username} por um valor de cadeia que represente um nome de utilizador.

Passos seguintes

Neste artigo, aprendeu a construir e personalizar uma API em Funções do Azure. Também aprendeu a reunir várias APIs, incluindo as fictícias, 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.

As referências seguintes podem ser úteis à medida que desenvolve ainda mais a sua API: