Déclencheurs et liaisons HTTP d’Azure FunctionsAzure Functions HTTP triggers and bindings

Cet article explique comment utiliser des déclencheurs et des liaisons de sortie HTTP dans Azure Functions.This article explains how to work with HTTP triggers and output bindings in Azure Functions.

Vous pouvez personnaliser un déclencheur HTTP pour répondre aux webhooks.An HTTP trigger can be customized to respond to webhooks.

Il s’agit des informations de référence pour les développeurs Azure Functions.This is reference information for Azure Functions developers. Si vous ne connaissez pas bien Azure Functions, commencez par consulter les ressources suivantes :If you're new to Azure Functions, start with the following resources:

Conseil

Si vous envisagez d’utiliser les liaisons HTTP ou WebHook, prévoyez d’éviter l’épuisement du port qui peut résulter d’une instanciation incorrecte de HttpClient.If you plan to use the HTTP or WebHook bindings, plan to avoid port exhaustion that can be caused by improper instantiation of HttpClient. Pour plus d’informations, consultez How to manage connections in Azure Functions (Comment gérer des connexions dans Azure Functions).For more information, see How to manage connections in Azure Functions.

Le code de cet article utilise par défaut la syntaxe .NET Core, utilisée dans les versions 2.x et ultérieures de Functions.The code in this article defaults to the syntax which uses .NET Core, used in Functions version 2.x and higher. Pour plus d'informations sur la syntaxe 1.x, consultez les modèles Functions 1.x.For information on the 1.x syntax, see the 1.x functions templates.

Packages - Functions 1.xPackages - Functions 1.x

Les liaisons HTTP sont fournies dans le package NuGet Microsoft.Azure.WebJobs.Extensions.Http, version 1.x.The HTTP bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Http NuGet package, version 1.x. Le code source du package se trouve dans le référentiel GitHub azure-webjobs-sdk-extensions.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

La prise en charge de cette liaison est automatique dans tous les environnements de développement.Support for this binding is automatically provided in all development environments. Vous n’avez pas besoin d’installer manuellement le package ou d’enregistrer l’extension.You don't have to manually install the package or register the extension.

Packages – Functions 2.x et versions ultérieuresPackages - Functions 2.x and higher

Les liaisons HTTP sont fournies dans le package NuGet Microsoft.Azure.WebJobs.Extensions.Http, version 3.x.The HTTP bindings are provided in the Microsoft.Azure.WebJobs.Extensions.Http NuGet package, version 3.x. Le code source du package se trouve dans le référentiel GitHub azure-webjobs-sdk-extensions.Source code for the package is in the azure-webjobs-sdk-extensions GitHub repository.

La prise en charge de cette liaison est automatique dans tous les environnements de développement.Support for this binding is automatically provided in all development environments. Vous n’avez pas besoin d’installer manuellement le package ou d’enregistrer l’extension.You don't have to manually install the package or register the extension.

DéclencheurTrigger

Le déclencheur HTTP vous permet d’appeler une fonction avec une requête HTTP.The HTTP trigger lets you invoke a function with an HTTP request. Vous pouvez utiliser un déclencheur HTTP pour générer des API serverless et répondre aux webhooks.You can use an HTTP trigger to build serverless APIs and respond to webhooks.

Par défaut, un déclencheur HTTP retourne le message HTTP 200 OK avec un corps vide dans Functions 1.x, ou le message HTTP 204 Aucun contenu avec un corps vide dans Functions 2.x et versions ultérieures.By default, an HTTP trigger returns HTTP 200 OK with an empty body in Functions 1.x, or HTTP 204 No Content with an empty body in Functions 2.x and higher. Pour modifier la réponse, configurez une liaison de sortie HTTP.To modify the response, configure an HTTP output binding.

Déclencheur - exempleTrigger - example

L’exemple suivant montre une fonction C# qui recherche un paramètre name dans la chaîne de requête ou dans le corps de la requête HTTP.The following example shows a C# function that looks for a name parameter either in the query string or the body of the HTTP request. Notez que la valeur renvoyée est utilisée pour la liaison de sortie, mais qu’aucun attribut de valeur renvoyée n’est requis.Notice that the return value is used for the output binding, but a return value attribute isn't required.

[FunctionName("HttpTriggerCSharp")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] 
    HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Déclencheur - attributsTrigger - attributes

Dans les bibliothèques de classes C# et Java, l’attribut HttpTrigger est disponible pour configurer la fonction.In C# class libraries and Java, the HttpTrigger attribute is available to configure the function.

Vous pouvez définir le niveau d’autorisation et des méthodes HTTP autorisées dans les paramètres de constructeur d’attribut, le type webhook et un modèle de routage.You can set the authorization level and allowable HTTP methods in attribute constructor parameters, webhook type, and a route template. Pour plus d’informations sur ces paramètres, consultez Déclencheur - configuration.For more information about these settings, see Trigger - configuration.

Cet exemple montre comment utiliser l’attribut HttpTrigger.This example demonstrates how to use the HttpTrigger attribute.

[FunctionName("HttpTriggerCSharp")]
public static Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequest req)
{
    ...
}

Pour obtenir un exemple complet, consultez l’exemple de déclencheur.For a complete example, see the trigger example.

Déclencheur - configurationTrigger - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json et l’attribut HttpTrigger.The following table explains the binding configuration properties that you set in the function.json file and the HttpTrigger attribute.

Propriété function.jsonfunction.json property Propriété d’attributAttribute property DescriptionDescription
typetype n/an/a Obligatoire : doit être défini sur httpTrigger.Required - must be set to httpTrigger.
directiondirection n/an/a Obligatoire : doit être défini sur in.Required - must be set to in.
namename n/an/a Obligatoire : nom de variable utilisé dans le code de la fonction pour la requête ou le corps de la requête.Required - the variable name used in function code for the request or request body.
authLevelauthLevel AuthLevelAuthLevel Détermine, le cas échéant, les clés qui doivent être présentes dans la requête pour appeler la fonction.Determines what keys, if any, need to be present on the request in order to invoke the function. Le niveau d’autorisation peut être l’une des valeurs suivantes :The authorization level can be one of the following values:
  • anonymous—Aucune clé API n’est obligatoire.anonymous—No API key is required.
  • function—Une clé API spécifique à la fonction est obligatoire.function—A function-specific API key is required. Il s’agit de la valeur par défaut si aucune valeur n’est fournie.This is the default value if none is provided.
  • admin—La clé principale est obligatoire.admin—The master key is required.
Pour plus d’informations, consultez la section sur les clés d’autorisation.For more information, see the section about authorization keys.
methodsmethods MéthodesMethods Tableau des méthodes HTTP auxquelles la fonction répond.An array of the HTTP methods to which the function responds. À défaut de spécification, la fonction répond à toutes les méthodes HTTP.If not specified, the function responds to all HTTP methods. Consultez Personnaliser le point de terminaison HTTP.See customize the HTTP endpoint.
routeroute ItinéraireRoute Définit le modèle de routage, en contrôlant les URL de requête auxquelles votre fonction répond.Defines the route template, controlling to which request URLs your function responds. La valeur par défaut est <functionname>.The default value if none is provided is <functionname>. Pour plus d’informations, consultez Personnaliser le point de terminaison HTTP.For more information, see customize the HTTP endpoint.
webHookTypewebHookType WebHookTypeWebHookType Prise en charge uniquement pour le runtime version 1.x.Supported only for the version 1.x runtime.

Configure le déclencheur HTTP pour qu’il agisse en tant que récepteur de Webhook pour le fournisseur spécifié.Configures the HTTP trigger to act as a webhook receiver for the specified provider. Ne définissez pas la propriété methods si vous définissez cette propriété.Don't set the methods property if you set this property. Le type de webhook peut être l’une des valeurs suivantes :The webhook type can be one of the following values:
  • genericJson—Point de terminaison webhook à usage général sans logique pour un fournisseur spécifique.genericJson—A general-purpose webhook endpoint without logic for a specific provider. Ce paramètre limite les requêtes à celles utilisant HTTP POST et le type de contenu application/json.This setting restricts requests to only those using HTTP POST and with the application/json content type.
  • github—La fonction répond aux Webhooks GitHub.github—The function responds to GitHub webhooks. N’utilisez pas la propriété authLevel avec des webhooks GitHub.Do not use the authLevel property with GitHub webhooks. Pour plus d’informations, consultez la section sur les webhooks GitHub plus loin dans cet article.For more information, see the GitHub webhooks section later in this article.
  • slack—La fonction répond aux Webhooks Slack.slack—The function responds to Slack webhooks. N’utilisez pas la propriété authLevel avec des webhooks Slack.Do not use the authLevel property with Slack webhooks. Pour plus d’informations, consultez la section sur les webhooks Slack plus loin dans cet article.For more information, see the Slack webhooks section later in this article.

Déclencheur - utilisationTrigger - usage

Le type d’entrée du déclencheur est déclaré comme étant HttpRequest ou un type personnalisé.The trigger input type is declared as either HttpRequest or a custom type. Si vous choisissez HttpRequest, vous obtenez un accès complet à l’objet de la requête.If you choose HttpRequest, you get full access to the request object. Pour un type personnalisé, le runtime tente d’analyser le corps de la requête JSON pour définir les propriétés de l’objet.For a custom type, the runtime tries to parse the JSON request body to set the object properties.

Personnaliser le point de terminaison HTTPCustomize the HTTP endpoint

Par défaut, quand vous créez une fonction pour un déclencheur HTTP, la fonction est adressable avec une route de la forme :By default when you create a function for an HTTP trigger, the function is addressable with a route of the form:

http://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>

Vous pouvez personnaliser cet itinéraire en utilisant la propriété facultative route sur la liaison d’entrée du déclencheur HTTP.You can customize this route using the optional route property on the HTTP trigger's input binding. Par exemple, le fichier function.json suivant définit une propriété route pour un déclencheur HTTP :As an example, the following function.json file defines a route property for an HTTP trigger:

{
    "bindings": [
    {
        "type": "httpTrigger",
        "name": "req",
        "direction": "in",
        "methods": [ "get" ],
        "route": "products/{category:alpha}/{id:int?}"
    },
    {
        "type": "http",
        "name": "res",
        "direction": "out"
    }
    ]
}

Avec cette configuration, la fonction est désormais adressable avec l’itinéraire suivant au lieu de l’itinéraire d’origine.Using this configuration, the function is now addressable with the following route instead of the original route.

http://<APP_NAME>.azurewebsites.net/api/products/electronics/357

Cela permet au code de la fonction de prendre en charge deux paramètres dans l’adresse, category et id.This allows the function code to support two parameters in the address, category and id.

Vous pouvez utiliser les contraintes d’itinéraire des API Web de votre choix avec vos paramètres.You can use any Web API Route Constraint with your parameters. Le code de la fonction C# suivant utilise les deux paramètres.The following C# function code makes use of both parameters.

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;

public static IActionResult Run(HttpRequest req, string category, int? id, ILogger log)
{
    var message = String.Format($"Category: {category}, ID: {id}");
    return (ActionResult)new OkObjectResult(message);
}

Par défaut, tous les itinéraires de fonction sont préfixés par api.By default, all function routes are prefixed with api. Vous pouvez également personnaliser ou supprimer le préfixe avec la propriété http.routePrefix dans votre fichier host.json.You can also customize or remove the prefix using the http.routePrefix property in your host.json file. L’exemple suivant supprime le préfixe d’itinéraire api en sélectionnant une chaîne vide pour le préfixe dans le fichier host.json.The following example removes the api route prefix by using an empty string for the prefix in the host.json file.

{
    "http": {
    "routePrefix": ""
    }
}

Utilisation des paramètres de routageUsing route parameters

Les paramètres de routage définissant le modèle route d’une fonction sont disponibles pour chaque liaison.Route parameters that defined a function's route pattern are available to each binding. Par exemple, si vous avez un itinéraire défini en tant que "route": "products/{id}", une liaison de stockage de table peut utiliser la valeur du paramètre {id} dans la configuration de liaison.For example, if you have a route defined as "route": "products/{id}" then a table storage binding can use the value of the {id} parameter in the binding configuration.

La configuration suivante montre comment le paramètre {id} est passé au rowKey de la liaison.The following configuration shows how the {id} parameter is passed to the binding's rowKey.

{
    "type": "table",
    "direction": "in",
    "name": "product",
    "partitionKey": "products",
    "tableName": "products",
    "rowKey": "{id}"
}

Utilisation d’identités de clientsWorking with client identities

S votre application de fonction utilise Authentification d’App Service/Autorisation, vous pouvez afficher des informations sur les clients authentifiés à partir de votre code.If your function app is using App Service Authentication / Authorization, you can view information about authenticated clients from your code. Ces informations sont disponibles en tant qu’en-têtes de demande injectées par la plateforme.This information is available as request headers injected by the platform.

Vous pouvez également lire ces informations à partir de la liaison de données.You can also read this information from binding data. Cette fonctionnalité est uniquement disponible pour le runtime Functions dans les versions 2.x et ultérieures.This capability is only available to the Functions runtime in 2.x and higher. Elle n’est actuellement également disponible que pour les langages .NET.It is also currently only available for .NET languages.

Les informations relatives aux clients authentifiés sont disponibles en tant que ClaimsPrincipal.Information regarding authenticated clients is available as a ClaimsPrincipal. Le ClaimsPrincipal est disponible dans le cadre du contexte de requête, comme le montre l’exemple suivant :The ClaimsPrincipal is available as part of the request context as shown in the following example:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;

public static IActionResult Run(HttpRequest req, ILogger log)
{
    ClaimsPrincipal identities = req.HttpContext.User;
    // ...
    return new OkObjectResult();
}

Le ClaimsPrincipal peut aussi simplement être inclus comme paramètre supplémentaire dans la signature de fonction :Alternatively, the ClaimsPrincipal can simply be included as an additional parameter in the function signature:

using System.Net;
using Microsoft.AspNetCore.Mvc;
using System.Security.Claims;
using Newtonsoft.Json.Linq;

public static void Run(JObject input, ClaimsPrincipal principal, ILogger log)
{
    // ...
    return;
}

Clés d’autorisationAuthorization keys

Functions vous permet d’utiliser des clés pour rendre plus difficile l’accès à vos points de terminaison de fonctions HTTP pendant le développement.Functions lets you use keys to make it harder to access your HTTP function endpoints during development. Un déclencheur HTTP standard peut exiger la présence d’une telle clé d’API dans la requête.A standard HTTP trigger may require such an API key be present in the request.

Important

Alors que les clés peuvent aider à masquer vos points de terminaison HTTP pendant le développement, elles ne sont pas destinées à sécuriser un déclencheur HTTP en production.While keys may help obfuscate your HTTP endpoints during development, they are not intended as a way to secure an HTTP trigger in production. Pour plus d’informations, consultez Sécuriser un point de terminaison HTTP en production.To learn more, see Secure an HTTP endpoint in production.

Notes

Dans le runtime Functions 1.x, les fournisseurs de webhooks peuvent utiliser des clés pour autoriser des requêtes de plusieurs façons, selon ce que le fournisseur prend en charge.In the Functions 1.x runtime, webhook providers may use keys to authorize requests in a variety of ways, depending on what the provider supports. Ceci est expliqué dans Webhooks et clés.This is covered in Webhooks and keys. Le runtime Functions dans les versions 2.x et ultérieures n’inclut pas la prise en charge intégrée pour les fournisseurs de webhooks.The Functions runtime in version 2.x and higher does not include built-in support for webhook providers.

Il existe deux types de clés :There are two types of keys:

  • Clés d’hôte : Ces clés sont partagées par toutes les fonctions au sein de l’application de fonction.Host keys: These keys are shared by all functions within the function app. Utilisées en tant que clés API, elles permettent d’accéder à toute fonction au sein de la Function App.When used as an API key, these allow access to any function within the function app.
  • Clés de fonction : Ces clés s’appliquent uniquement aux fonctions spécifiques sous lesquelles elles sont définies.Function keys: These keys apply only to the specific functions under which they are defined. Utilisées en tant que clés API, elles permettent d’accéder uniquement à ces fonctions.When used as an API key, these only allow access to that function.

Chaque clé est nommée pour référence et il existe une clé par défaut (nommée « default ») au niveau fonction et hôte.Each key is named for reference, and there is a default key (named "default") at the function and host level. Les clés de fonction prennent le pas sur les clés d’hôte.Function keys take precedence over host keys. Quand deux clés portent le même nom, la clé de fonction est toujours utilisée.When two keys are defined with the same name, the function key is always used.

Chaque application de fonction a également une clé principale spéciale.Each function app also has a special master key. Cette clé est une clé d’hôte nommée _master, qui fournit un accès pour l’administration aux API du runtime.This key is a host key named _master, which provides administrative access to the runtime APIs. Cette clé ne peut pas être révoquée.This key cannot be revoked. Quand vous définissez un niveau d’autorisation de admin, les requêtes doivent utiliser la clé principale ; toute autre clé provoque l’échec de l’autorisation.When you set an authorization level of admin, requests must use the master key; any other key results in authorization failure.

Attention

En raison des autorisations élevées dans votre application de fonction accordées par la clé principale, vous ne devez pas partager celle-ci avec des tiers, ou la distribuer dans des applications clientes natives.Due to the elevated permissions in your function app granted by the master key, you should not share this key with third parties or distribute it in native client applications. Faites preuve de prudence lorsque vous choisissez le niveau d’autorisation administrateur.Use caution when choosing the admin authorization level.

Obtention de clésObtaining keys

Les clés sont stockées dans votre Function App dans Azure, et chiffrées au repos.Keys are stored as part of your function app in Azure and are encrypted at rest. Pour voir vos clés, en créer de nouvelles ou affecter de nouvelles valeurs aux clés, accédez à une de vos fonctions déclenchées par HTTP dans le portail Azure, puis sélectionnez Gérer.To view your keys, create new ones, or roll keys to new values, navigate to one of your HTTP-triggered functions in the Azure portal and select Manage.

Gérez les clés de fonction dans le portail.

Vous pouvez obtenir des clés de fonction programmatiquement en utilisant des API Gestion des clés.You may obtain function keys programmatically by using Key management APIs.

Autorisation de clé APIAPI key authorization

La plupart des modèles de déclencheur HTTP nécessitent une clé d’API dans la requête.Most HTTP trigger templates require an API key in the request. Ainsi, votre requête HTTP doit se présenter comme l’URL suivante :So your HTTP request normally looks like the following URL:

https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?code=<API_KEY>

La clé peut être incluse dans une variable de chaîne de requête nommée code, comme ci-dessus.The key can be included in a query string variable named code, as above. Elle peut également être incluse dans un en-tête HTTP x-functions-key.It can also be included in an x-functions-key HTTP header. La valeur de la clé peut être toute clé de fonction définie pour la fonction, ou toute clé d’hôte.The value of the key can be any function key defined for the function, or any host key.

Vous pouvez autoriser les requêtes anonymes, qui ne nécessitent pas de clés.You can allow anonymous requests, which do not require keys. Vous pouvez également exiger que la clé principale soit utilisée.You can also require that the master key be used. Pour modifier le niveau d’autorisation par défaut, utilisez la propriété authLevel dans le JSON de liaison.You change the default authorization level by using the authLevel property in the binding JSON. Pour plus d’informations, consultez Déclencheur - configuration.For more information, see Trigger - configuration.

Notes

Lors de l’exécution de fonctions localement, l’autorisation est désactivée, quel que soit le paramètre de niveau d’autorisation spécifié.When running functions locally, authorization is disabled regardless of the specified authorization level setting. Après la publication sur Azure, le paramètre authLevel de votre déclencheur est appliqué.After publishing to Azure, the authLevel setting in your trigger is enforced. Les clés sont quand même exigées lors d’une exécution locale dans un conteneur.Keys are still required when running locally in a container.

Sécuriser un point de terminaison HTTP en productionSecure an HTTP endpoint in production

Pour sécuriser complètement vos points de terminaison de fonction en production, vous devez envisager d’implémenter une des options suivantes de sécurité au niveau de l’application de fonction :To fully secure your function endpoints in production, you should consider implementing one of the following function app-level security options:

  • Activer l’authentification / autorisation App Service pour votre application de fonction.Turn on App Service Authentication / Authorization for your function app. La plateforme App Service vous permet d’utiliser AAD (Azure Active Directory) et plusieurs fournisseurs d’identité tiers pour authentifier les clients.The App Service platform lets you use Azure Active Directory (AAD) and several third-party identity providers to authenticate clients. Vous pouvez utiliser ceci pour implémenter des règles d’autorisation personnalisées pour vos fonctions, et vous pouvez utiliser les informations utilisateur dans le code de votre fonction.You can use this to implement custom authorization rules for your functions, and you can work with user information from your function code. Pour plus d’informations, consultez Authentification et autorisation dans Azure App Service et Utilisation des identités de clients.To learn more, see Authentication and authorization in Azure App Service and Working with client identities.

  • Utilisez Gestion des API Azure pour authentifier les requêtes.Use Azure API Management (APIM) to authenticate requests. Gestion des API Azure offre une variété d’options de sécurité des API pour les requêtes entrantes.APIM provides a variety of API security options for incoming requests. Pour plus d’informations, consultez Stratégies d’authentification dans Gestion des API.To learn more, see API Management authentication policies. Avec Gestion des API Azure en place, vous pouvez configurer votre application de fonction pour qu’elle accepte seulement les requêtes provenant de l’adresse IP de votre instance Gestion des API Azure.With APIM in place, you can configure your function app to accept requests only from the IP address of your APIM instance. Pour plus d’informations, consultez Restriction des adresses IP.To learn more, see IP address restrictions.

  • Déployez votre application de fonction sur un environnement Azure App Service.Deploy your function app to an Azure App Service Environment (ASE). L’environnement App Service fournit un environnement d’hébergement dédié où exécuter vos fonctions.ASE provides a dedicated hosting environment in which to run your functions. L’environnement App Service vous permet de configurer une passerelle frontend unique que vous pouvez utiliser pour authentifier toutes les requêtes entrantes.ASE lets you configure a single front-end gateway that you can use to authenticate all incoming requests. Pour plus d’informations, consultez Configuration d’un pare-feu d’applications Web (WAF) pour un environnement App Service.For more information, see Configuring a Web Application Firewall (WAF) for App Service Environment.

Quand vous utilisez l’une de ces méthodes de sécurité au niveau de l’application de fonction, vous devez définir le niveau d’autorisation de la fonction déclenchée par HTTP sur anonymous.When using one of these function app-level security methods, you should set the HTTP-triggered function authorization level to anonymous.

webhooksWebhooks

Notes

Le mode Webhook est disponible seulement pour la version 1.x du runtime Functions.Webhook mode is only available for version 1.x of the Functions runtime. Cette modification a été apportée afin d’améliorer les performances des déclencheurs HTTP dans les versions 2.x et ultérieures.This change was made to improve the performance of HTTP triggers in version 2.x and higher.

Dans la version 1.x, les modèles de webhook offrent une validation supplémentaire pour les charges utiles de webhook.In version 1.x, webhook templates provide additional validation for webhook payloads. Dans les versions 2.x et ultérieures, le déclencheur HTTP de base continue néanmoins de fonctionner et constitue l’approche recommandée pour les webhooks.In version 2.x and higher, the base HTTP trigger still works and is the recommended approach for webhooks.

Webhooks GitHubGitHub webhooks

Pour répondre aux webhooks GitHub, commencez par créer votre fonction avec un déclencheur HTTP, puis définissez la propriété webHookType sur github.To respond to GitHub webhooks, first create your function with an HTTP Trigger, and set the webHookType property to github. Ensuite, copiez son URL et sa clé API dans la page Ajouter un Webhook de votre dépôt GitHub.Then copy its URL and API key into the Add webhook page of your GitHub repository.

Webhooks SlackSlack webhooks

La webhook de Slack génère un jeton à votre place au lieu de vous laisser le spécifier. Vous devez donc configurer une clé spécifique de la fonction avec le jeton reçu de Slack.The Slack webhook generates a token for you instead of letting you specify it, so you must configure a function-specific key with the token from Slack. Consultez Clés d’autorisation.See Authorization keys.

Webhooks et clésWebhooks and keys

Une autorisation de webhook est gérée par le composant récepteur de webhook, qui fait partie du déclencheur HTTP, et le mécanisme varie en fonction du type de webhook.Webhook authorization is handled by the webhook receiver component, part of the HTTP trigger, and the mechanism varies based on the webhook type. Chaque mécanisme s’appuie sur une clé.Each mechanism does rely on a key. Par défaut, la clé de fonction nommée « default » est utilisée.By default, the function key named "default" is used. Pour utiliser une autre clé, configurez le fournisseur de webhook pour envoyer le nom de clé avec la requête de l’une des manières suivantes :To use a different key, configure the webhook provider to send the key name with the request in one of the following ways:

  • Chaîne de requête : Le fournisseur transmet le nom de la clé au paramètre de chaîne de requête clientid (par exemple, https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>).Query string: The provider passes the key name in the clientid query string parameter, such as https://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>.
  • En-tête de requête : Le fournisseur transmet le nom de la clé à l’en-tête x-functions-clientid.Request header: The provider passes the key name in the x-functions-clientid header.

Déclencheur : limitesTrigger - limits

La longueur de la requête HTTP est limitée à 100 Mo (104 857 600 octets) et la longueur de l’URL à 4 Ko (4 096 octets).The HTTP request length is limited to 100 MB (104,857,600 bytes), and the URL length is limited to 4 KB (4,096 bytes). Ces limites sont spécifiées par l’élément httpRuntime du fichier Web.config du runtime.These limits are specified by the httpRuntime element of the runtime's Web.config file.

Si une fonction utilisant le déclencheur HTTP ne se termine pas au bout de 230 secondes, Azure Load Balancer arrive à expiration et retourne une erreur HTTP 502.If a function that uses the HTTP trigger doesn't complete within 230 seconds, the Azure Load Balancer will time out and return an HTTP 502 error. La fonction continuera à s’exécuter, mais ne pourra pas renvoyer de réponse HTTP.The function will continue running but will be unable to return an HTTP response. Pour les fonctions à exécution longues, nous vous recommandons de suivre des modèles asynchrones et de retourner un emplacement où vous pouvez effectuer un test ping de l’état de la requête.For long-running functions, we recommend that you follow async patterns and return a location where you can ping the status of the request. Pour plus d’informations sur la durée d’exécution d’une fonction, consultez Scale and hosting - Consumption plan (Mise à l’échelle et hébergement – Plan de consommation).For information about how long a function can run, see Scale and hosting - Consumption plan.

OutputOutput

Utilisez la liaison de sortie HTTP pour répondre à l’expéditeur de la demande HTTP.Use the HTTP output binding to respond to the HTTP request sender. Cette liaison requiert un déclencheur HTTP, et vous permet de personnaliser la réponse associée à la demande du déclencheur.This binding requires an HTTP trigger and allows you to customize the response associated with the trigger's request. Si une liaison de sortie HTTP n’est pas fournie, un déclencheur HTTP retourne le message HTTP 200 OK avec un corps vide dans Functions 1.x, ou le message HTTP 204 Aucun contenu avec un corps vide dans Functions 2.x et les versions ultérieures.If an HTTP output binding is not provided, an HTTP trigger returns HTTP 200 OK with an empty body in Functions 1.x, or HTTP 204 No Content with an empty body in Functions 2.x and higher.

Sortie - configurationOutput - configuration

Le tableau suivant décrit les propriétés de configuration de liaison que vous définissez dans le fichier function.json.The following table explains the binding configuration properties that you set in the function.json file. Pour les bibliothèques de classes C#, aucune propriété d’attribut ne correspond à ces propriétés de function.json.For C# class libraries, there are no attribute properties that correspond to these function.json properties.

PropriétéProperty DescriptionDescription
typetype Cette propriété doit être définie sur http.Must be set to http.
directiondirection Cette propriété doit être définie sur out.Must be set to out.
namename Nom de variable utilisé dans le code de fonction pour la réponse, ou $return pour utiliser la valeur renvoyée.The variable name used in function code for the response, or $return to use the return value.

Sortie - utilisationOutput - usage

Pour envoyer une réponse HTTP, utilisez les modèles de réponse standard du langage.To send an HTTP response, use the language-standard response patterns. Dans un script C# ou C#, choisissez le type de retour de fonction IActionResult ou Task<IActionResult>.In C# or C# script, make the function return type IActionResult or Task<IActionResult>. En C#, aucun attribut de valeur renvoyée n’est requis.In C#, a return value attribute isn't required.

Par obtenir des exemples de réponse, consultez l’exemple de déclencheur.For example responses, see the trigger example.

Paramètres host.jsonhost.json settings

Cette section décrit les paramètres de configuration globaux disponibles pour cette liaison dans les versions 2.x et ultérieures.This section describes the global configuration settings available for this binding in versions 2.x and higher. L’exemple de fichier host.json ci-dessous contient seulement les paramètres des versions 2.x et ultérieures pour cette liaison.The example host.json file below contains only the version 2.x+ settings for this binding. Pour plus d’informations sur les paramètres de configuration globaux dans les versions 2.x et ultérieures, consultez Informations de référence sur le fichier host.json pour Azure Functions.For more information about global configuration settings in versions 2.x and beyond, see host.json reference for Azure Functions.

Notes

Pour obtenir une référence de host.json dans Functions 1.x, consultez Informations de référence sur le fichier host.json pour Azure Functions 1.x.For a reference of host.json in Functions 1.x, see host.json reference for 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"
            }
        }
    }
}
PropriétéProperty DefaultDefault DescriptionDescription
customHeaderscustomHeaders Aucunnone Vous permet de définir des en-têtes personnalisés dans la réponse HTTP.Allows you to set custom headers in the HTTP response. L’exemple précédent ajoute l’en-tête X-Content-Type-Options à la réponse pour éviter la détection du type de contenu.The previous example adds the X-Content-Type-Options header to the response to avoid content type sniffing.
dynamicThrottlesEnableddynamicThrottlesEnabled true*true* Lorsqu’il est activé, ce paramètre provoque la vérification périodique des compteurs de performance système, comme les connexions/les threads/les processus/la mémoire/le processeur, etc., par le pipeline de traitement des requêtes. Si l’un de ces compteurs dépasse un seuil supérieur intégré (80 %), les requêtes sont rejetées avec une réponse 429 (trop de demandes) jusqu’à ce qu’un niveau normal soit retrouvé.When enabled, this setting causes the request processing pipeline to periodically check system performance counters like connections/threads/processes/memory/cpu/etc. and if any of those counters are over a built-in high threshold (80%), requests will be rejected with a 429 "Too Busy" response until the counter(s) return to normal levels.
*La valeur par défaut d’un plan Consommation est true.*The default in a Consumption plan is true. La valeur par défaut dans un plan dédié est false.The default in a Dedicated plan is false.
hstshsts non activénot enabled Lorsque isEnabled est défini sur true, le comportement HTTP Strict Transport Security (HSTS) de .NET Core est appliqué, comme défini dans la classe HstsOptions.When isEnabled is set to true, the HTTP Strict Transport Security (HSTS) behavior of .NET Core is enforced, as defined in the HstsOptions class. L’exemple ci-dessus définit également la propriété maxAge sur 10 jours.The above example also sets the maxAge property to 10 days. Les propriétés prises en charge de hsts sont :Supported properties of hsts are:
PropriétéPropertyDescriptionDescription
excludedHostsexcludedHostsTableau de chaînes des noms d’hôtes pour lesquels l’en-tête HSTS n’est pas ajouté.A string array of host names for which the HSTS header isn't added.
includeSubDomainsincludeSubDomainsValeur booléenne qui indique si le paramètre includeSubDomain de l’en-tête Strict-Transport-Security est activé.Boolean value that indicates whether the includeSubDomain parameter of the Strict-Transport-Security header is enabled.
maxAgemaxAgeChaîne qui définit le paramètre max-age de l’en-tête Strict-Transport-Security.String that defines the max-age parameter of the Strict-Transport-Security header.
preloadpreloadValeur booléenne qui indique si le paramètre preload de l’en-tête Strict-Transport-Security est activé.Boolean that indicates whether the preload parameter of the Strict-Transport-Security header is enabled.
maxConcurrentRequestsmaxConcurrentRequests 100*100* Nombre maximal de fonctions HTTP exécutées en parallèle.The maximum number of HTTP functions that are executed in parallel. Ce paramètre vous permet de contrôler la concurrence, et ainsi facilite la gestion de l’utilisation des ressources.This allows you to control concurrency, which can help manage resource utilization. Par exemple, vous pouvez disposer d’une fonction HTTP qui utilise de nombreuses ressources système (mémoire/processeur/sockets) et qui provoque par conséquent des situations où la concurrence est trop élevée.For example, you might have an HTTP function that uses a lot of system resources (memory/cpu/sockets) such that it causes issues when concurrency is too high. Vous pouvez également avoir une fonction qui effectue des requête vers un service tiers, et qui émet à ce titre des appels dont le débit doit être limité.Or you might have a function that makes outbound requests to a third party service, and those calls need to be rate limited. Dans ces cas, il peut être pertinent d’appliquer une limitation.In these cases, applying a throttle here can help.
*La valeur par défaut d’un plan Consommation est 100.*The default for a Consumption plan is 100. La valeur par défaut d’un plan dédié est illimitée (-1).The default for a Dedicated plan is unbounded (-1).
maxOutstandingRequestsmaxOutstandingRequests 200*200* Nombre maximal de requêtes en attente qui ont lieu à un moment donné.The maximum number of outstanding requests that are held at any given time. La limite inclut les requêtes qui sont en file d’attente, mais dont l’exécution n’a pas démarré, ainsi que les exécutions en cours.This limit includes requests that are queued but have not started executing, as well as any in progress executions. Toutes les requêtes entrantes au-delà de cette limite sont rejetées avec une réponse 429 « Trop occupé ».Any incoming requests over this limit are rejected with a 429 "Too Busy" response. Ainsi, les appelants peuvent appliquer des stratégies temporelles de nouvelle tentative et vous êtes en mesure de contrôler les latences maximales de requêtes.That allows callers to employ time-based retry strategies, and also helps you to control maximum request latencies. Ce paramètre contrôle uniquement la mise en file d’attente qui se produit dans le chemin d’accès d’exécution de l’hôte de script.This only controls queuing that occurs within the script host execution path. Les autres files d’attente, telles que la file d’attente des requêtes ASP.NET, sont toujours actives et ne sont pas concernées par ce paramètre.Other queues such as the ASP.NET request queue will still be in effect and unaffected by this setting.
*La valeur par défaut d’un plan Consommation est 200.*The default for a Consumption plan is 200. La valeur par défaut d’un plan dédié est illimitée (-1).The default for a Dedicated plan is unbounded (-1).
routePrefixroutePrefix apiapi Préfixe d’itinéraire qui s’applique à tous les itinéraires.The route prefix that applies to all routes. Utilisez une chaîne vide pour supprimer le préfixe par défaut.Use an empty string to remove the default prefix.

Étapes suivantesNext steps

En savoir plus sur les déclencheurs et les liaisons Azure FunctionsLearn more about Azure functions triggers and bindings