Envoyer la requête
S’APPLIQUE À : Tous les niveaux de Gestion des API
La stratégie send-request
envoie la demande fournie à l’URL spécifiée, sans attendre plus longtemps que la valeur du délai d’expiration définie.
Notes
Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.
Instruction de la stratégie
<send-request mode="new | copy" response-variable-name="" timeout="60 sec" ignore-error
="false | true">
<set-url>request URL</set-url>
<set-method>...</set-method>
<set-header>...</set-header>
<set-body>...</set-body>
<authentication-certificate thumbprint="thumbprint" />
<proxy>...</proxy>
</send-request>
Attributs
Attribut | Description | Obligatoire | Default |
---|---|---|---|
mode | Détermine s’il s’agit d’une requête new ou d’une copy des en-têtes et du corps dans la requête actuelle. Dans la section stratégie outbound, mode=copy n’initialise pas le corps de la demande. Les expressions de stratégie sont autorisées. |
Non | new |
response-variable-name | Nom de la variable contextuelle qui recevra un objet Response. Si la variable n’existe pas, elle est créée après l’exécution réussie de la stratégie, et devient accessible par le biais de la collection context.Variable . Les expressions de stratégie sont autorisées. |
Oui | N/A |
délai d'expiration | Délai d’expiration en secondes avant l’échec de l’appel à l’URL. Les expressions de stratégie sont autorisées. | Non | 60 |
ignore-error | Si la valeur est true et que la requête génère une erreur, l’erreur est ignorée et la variable de réponse contient une valeur Null. Les expressions de stratégie ne sont pas autorisées. |
Non | false |
Éléments
Élément | Description | Obligatoire |
---|---|---|
set-url | URL de la demande. Les expressions de stratégie sont autorisées. | Non si mode=copy . Dans le cas contraire Oui. |
set-method | Définit la méthode de la requête. Les expressions de stratégie ne sont pas autorisées. | Non si mode=copy . Dans le cas contraire Oui. |
set-header | Définit un en-tête dans la requête. Utilisez plusieurs éléments set-header pour plusieurs en-tête de requête. |
Non |
set-body | Définit le corps de la requête. | Non |
authentication-certificate | Certificat à utiliser pour l’authentification du client, spécifié dans un attribut thumbprint . |
Non |
proxy | Demande d’itinéraires via un proxy HTTP. | Non |
Usage
- Sections de la stratégie : inbound, outbound, backend, on-error
- Étendues de la stratégie : global, espace de travail, produit, API, opération
- Passerelles : dédiées, consommation, auto-hébergées, espace de travail
Notes d’utilisation
Si votre instance d’API Management est déployée (injectée) dans un VNet en mode interne et que vous utilisez cette stratégie pour envoyer une requête d’API à une API exposée dans la même instance d’API Management, vous pouvez rencontrer un délai d’expiration avec une erreur HTTP 500 BackendConnectionFailure. Ceci est le résultat d’une limitation d’Azure Load Balancer.
Pour chaîner les requêtes d’API à la passerelle dans ce scénario, configurez set-url
pour utiliser l’URL de bouclage localhost https://127.0.0.1
. Définissez également l’en-tête HOST
pour spécifier l’hôte de la passerelle de cette instance d’API Management. Vous pouvez utiliser le azure-api.net
par défaut ou votre hôte de domaine personnalisé. Par exemple :
<send-request>
<set-url>https://127.0.0.1/myapi/myoperation</set-url>
<set-header name="Host">
<value>myapim.azure-api.net</value>
</set-header>
</send-request>
Pour plus d’informations, voir ce billet de blog.
Exemple
Cet exemple montre un moyen de vérifier un jeton de référence avec un serveur d’autorisation. Pour plus d’informations sur cet exemple, consultez la page Utilisation de services externes à partir du service Gestion des API Azure.
<inbound>
<!-- Extract token from Authorization header parameter -->
<set-variable name="token" value="@(context.Request.Headers.GetValueOrDefault("Authorization","scheme param").Split(' ').Last())" />
<!-- Send request to Token Server to validate token (see RFC 7662) -->
<send-request mode="new" response-variable-name="tokenstate" timeout="20" ignore-error="true">
<set-url>https://microsoft-apiappec990ad4c76641c6aea22f566efc5a4e.azurewebsites.net/introspection</set-url>
<set-method>POST</set-method>
<set-header name="Authorization" exists-action="override">
<value>basic dXNlcm5hbWU6cGFzc3dvcmQ=</value>
</set-header>
<set-header name="Content-Type" exists-action="override">
<value>application/x-www-form-urlencoded</value>
</set-header>
<set-body>@($"token={(string)context.Variables["token"]}")</set-body>
</send-request>
<choose>
<!-- Check active property in response -->
<when condition="@((bool)((IResponse)context.Variables["tokenstate"]).Body.As<JObject>()["active"] == false)">
<!-- Return 401 Unauthorized with http-problem payload -->
<return-response>
<set-status code="401" reason="Unauthorized" />
<set-header name="WWW-Authenticate" exists-action="override">
<value>Bearer error="invalid_token"</value>
</set-header>
</return-response>
</when>
</choose>
<base />
</inbound>
Stratégies connexes
Contenu connexe
Pour plus d’informations sur l’utilisation des stratégies, consultez :
- Tutoriel : Transformer et protéger votre API
- Référence de stratégie pour obtenir la liste complète des instructions et des paramètres de stratégie
- Expressions de stratégie
- Définir ou modifier des stratégies
- Réutilisation de configurations de stratégie
- Référentiel d’extrait de stratégie
- Créer des stratégies à l’aide de Microsoft Copilot dans Azure