Personnaliser un point de terminaison HTTP dans Azure Functions

Dans cet article, vous allez découvrir comment Azure Functions vous permet de générer des API hautement évolutives. Azure Functions est fourni avec une collection de liaisons et de déclencheurs HTTP intégrés qui permettent de créer facilement un point de terminaison dans différents langages, dont Node.js et C# et bien plus encore. Dans cet article, vous allez personnaliser un déclencheur HTTP pour gérer des actions spécifiques dans votre conception d’API. Vous allez également préparer le développement de votre API, l’intégration avec Proxys Azure Functions et la configuration d’API factices. Ces tâches s’effectuent sur l’environnement de calcul sans serveur de Functions. Vous n’avez donc pas à vous soucier de la mise à l’échelle des ressources et vous pouvez vous concentrer uniquement sur votre logique d’API.

Important

Les proxys Azure Functions sont une fonctionnalité héritée des versions 1.x à 3.x du runtime Azure Functions. La prise en charge des proxys peut être réactivée dans la version 4.x pour que vous puissiez mettre à niveau vos applications Functions vers la dernière version du runtime. Dès que possible, vous devez basculer vers l’intégration de vos applications de fonction avec Gestion des API Azure. Gestion des API vous permet de tirer parti d’un ensemble plus complet de fonctionnalités pour définir, sécuriser, gérer et monétiser vos API basées sur Functions. Pour plus d’informations, consultez Intégration de Gestion des API.

Pour savoir comment réactiver la prise en charge des proxys dans Functions version 4.x, consultez Réactiver les proxys dans Functions v4.x.

Prérequis

Cette rubrique utilise comme point de départ les ressources créées dans Créer votre première fonction à partir du portail Azure. Si vous ne l’avez pas déjà fait, suivez ces étapes maintenant pour créer votre application de la fonction.

La fonction résultante sera utilisée pour le reste de cet article.

Connexion à Azure

Connectez-vous au portail Azure avec votre compte Azure.

Personnaliser une fonction HTTP

Par défaut, la fonction de votre déclencheur par HTTP est configurée pour accepter n’importe quelle méthode HTTP. Vous pouvez également utiliser l’URL par défaut, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>. Dans cette section, vous allez modifier la fonction de façon à répondre uniquement aux demandes GET avec /api/hello.

  1. Accédez à votre fonction sur le Portail Azure. Dans le menu de gauche, sélectionnez Integration (Intégration), puis sous Trigger (Déclencheur), sélectionnez HTTP (req) .

    Personnalisation d’une fonction HTTP

  2. Utilisez les paramètres de déclencheur HTTP spécifiés dans le tableau suivant.

    Champ Exemple de valeur Description
    Modèle d’itinéraire hello Détermine l’itinéraire utilisé pour appeler cette fonction.
    Niveau d’autorisation Anonyme Facultatif : rend votre fonction accessible sans clé API
    Méthodes HTTP sélectionnées GET Autorise uniquement l’utilisation des méthodes HTTP sélectionnés pour appeler cette fonction.

    Vous n’avez pas inclus le préfixe du chemin d’accès de base /api dans le modèle d’itinéraire, car il est géré par un paramètre global.

  3. Sélectionnez Enregistrer.

Pour en savoir plus sur la personnalisation des fonctions HTTP, consultez Liaisons HTTP Azure Functions.

Tester l’API

Ensuite, testez votre fonction pour observer son fonctionnement avec la nouvelle surface d’API.

  1. Dans le menu de gauche de la page de fonction, sélectionnez Code + Test.

  2. Dans le menu supérieur, sélectionnez Get function URL (Obtenir l’URL de fonction), puis copiez l’URL. Vérifiez que l’URL utilise maintenant le chemin d’accès /api/hello.

  3. Copiez l’URL dans un nouvel onglet du navigateur ou dans le client REST de votre choix.

    Les navigateurs utilisent GET par défaut.

  4. Ajoutez des paramètres à la chaîne de requête dans votre URL.

    Par exemple : /api/hello/?name=John.

  5. Appuyez sur Entrée pour vérifier qu’elle fonctionne. La réponse « Hello John » doit s’afficher.

  6. Vous pouvez également essayer d’appeler le point de terminaison avec une autre méthode HTTP pour vérifier que la fonction n’est pas exécutée. Pour cela, utilisez un client REST, par exemple cURL, Postman ou Fiddler.

Vue d’ensemble des proxys

Dans la section suivante, vous ferez apparaître votre API par le biais d’un proxy. Azure Functions Proxies vous permet de transférer les requêtes vers d’autres ressources. Vous définissez un point de terminaison HTTP comme avec le déclencheur HTTP. Toutefois, au lieu d’écrire du code à exécuter lorsque ce point de terminaison est appelé, vous fournissez une URL vers une implémentation à distance. Cela vous permet de composer plusieurs sources d’API en une seule surface d’API, facile à utiliser par les clients. Cela est utile si vous souhaitez créer votre API en tant que microservice.

Un proxy peut pointer vers n’importe quelle ressource HTTP, notamment :

Pour en savoir plus sur les proxys, consultez Utilisation d’Azure Functions Proxies.

Notes

Les proxies sont disponibles dans Azure Functions versions 1.x à 3.x.

Créer un premier proxy

Dans cette section, vous allez créer un proxy qui sert de frontend à votre API globale.

Configuration de l’environnement frontend

Répétez les étapes de la page Créer une application de fonction pour créer une application de fonction dans laquelle vous allez créer votre proxy. L’URL de cette nouvelle application sert de frontend à notre API et l’application de fonction que vous avez modifiée précédemment sert de backend.

  1. Accédez à votre nouvelle application de fonction frontend sur le portail.

  2. Sélectionnez Configuration et choisissez Paramètres de l’application.

  3. Faites défiler jusqu’à Application settings (Paramètres de l’application) où les paires clé/valeur sont stockées, puis créez un paramètre avec la clé HELLO_HOST. Donnez-lui comme valeur l’hôte de votre application de fonction backend, par exemple <YourBackendApp>.azurewebsites.net. Cette valeur fait partie de l’URL que vous avez copiée au moment de tester votre fonction HTTP. Vous ferez référence à ce paramètre plus tard dans la configuration.

    Notes

    Les paramètres de l’application sont recommandés pour la configuration d’hôte afin d’éviter une dépendance à l’environnement codé en dur pour le proxy. Grâce à eux, vous pouvez déplacer la configuration du proxy d’un environnement à l’autre, et les paramètres de l’application propres à l’environnement s’appliqueront.

  4. Sélectionnez Enregistrer.

Créer un proxy sur le serveur frontal

  1. Revenez à votre application de fonction frontend sur le portail.

  2. Dans le menu de gauche, sélectionnez Proxies, puis sélectionnez Add (Ajouter).

  3. Sur la page New Proxy (Nouveau proxy), utilisez les paramètres du tableau suivant, puis sélectionnez Create (Créer).

    Champ Exemple de valeur Description
    Nom HelloProxy Nom convivial utilisé uniquement à des fins de gestion.
    Modèle d’itinéraire /api/remotehello Détermine l’itinéraire utilisé pour appeler ce proxy.
    URL principale https://%HELLO_HOST%/api/hello Spécifie le point de terminaison vers lequel la demande doit être redirigée via proxy.

    Création d’un proxy

    Azure Functions Proxies ne fournit pas de préfixe du chemin de base /api ; celui-ci doit être inclus dans le modèle d’itinéraire. La syntaxe %HELLO_HOST% fait référence au paramètre d’application que vous avez créé précédemment. L’URL résolue pointera vers votre fonction d’origine.

  4. Essayez votre nouveau proxy en copiant l’URL du proxy et en le testant dans le navigateur ou avec le client HTTP de votre choix :

    • Pour une fonction anonyme, utilisez : https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Pour une fonction utilisant une autorisation : https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Créer une API factice

Maintenant, utilisez un proxy pour créer une API factice pour votre solution. Ce proxy permet au développement client de progresser, sans que le serveur principal soit nécessairement implémenté dans sa totalité. Dans la suite du développement, vous pouvez créer une nouvelle application de fonction qui prenne en charge cette logique et y redirige votre proxy.

Pour créer cette API fictive, nous allons créer un nouveau proxy, cette fois en utilisant l’Éditeur App Service. Pour commencer, accédez à votre application de fonction sur le portail. Sélectionnez Fonctionnalités de la plateforme, puis, sous Outils de développement, recherchez Éditeur App Service. L’Éditeur App Service s’ouvre dans un nouvel onglet.

Sélectionnez proxies.json dans la barre de navigation gauche. Ce fichier stocke la configuration de tous vos proxys. Si vous utilisez l’une des méthodes de déploiement de Functions, vous maintenez ce fichier dans le contrôle de code source. Pour en savoir plus sur ce fichier, consultez la page Configuration avancée des proxys.

Si vous avez suivi toutes les étapes jusqu’à présent, votre proxies.json doit se présenter ainsi :

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

Vous allez maintenant ajouter votre API factice. Remplacez votre fichier proxies.json par le code suivant :

{
    "$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"
                    ]
                }
            }
        }
    }
}

Ce code ajoute un nouveau proxy, GetUserByName, sans la propriété backendUri. Au lieu d’appeler une autre ressource, il modifie la réponse par défaut des proxys par substitution de réponse. Les substitutions de demandes et de réponses peuvent également être utilisées avec une URL principale. Cette technique est utile pour la redirection via proxy vers un système hérité, où vous devrez peut-être modifier les en-têtes, interroger des paramètres, etc. Pour en savoir plus sur les substitutions de demandes et de réponses, consultez la page Modifier les demandes et les réponses dans les proxys.

Testez votre API factice en appelant le point de terminaison <YourProxyApp>.azurewebsites.net/api/users/{username} à l’aide d’un navigateur ou du client REST de votre choix. Veillez à remplacer {username} par une valeur de chaîne représentant un nom d’utilisateur.

Étapes suivantes

Dans cet article, vous avez appris à créer et à personnaliser une API sur Azure Functions. Vous avez également appris à réunir plusieurs API, y compris factices, en une surface d’API unifiée. Vous pouvez utiliser ces techniques pour construire des API plus complexes, qui s’exécutent sur le modèle de calcul sans serveur fourni par Azure Functions.

Les références suivantes peuvent être utiles pour développer davantage votre API :