Aanvraag verzenden
VAN TOEPASSING OP: Alle API Management-lagen
Het send-request
beleid verzendt de opgegeven aanvraag naar de opgegeven URL en wacht niet langer dan de time-outwaarde van de set.
Notitie
Stel de elementen en onderliggende elementen van het beleid in de volgorde in die in de beleidsverklaring is opgegeven. Meer informatie over het instellen of bewerken van API Management-beleid.
Beleidsinstructie
<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>
Kenmerken
Kenmerk | Beschrijving | Vereist | Standaardinstelling |
---|---|---|---|
modus | Bepaalt of dit een new aanvraag of een copy van de headers en hoofdtekst in de huidige aanvraag is. In de sectie mode=copy Uitgaand beleid wordt de aanvraagbody niet geïnitialiseerd. Beleidsexpressies zijn toegestaan. |
Nee | new |
response-variable-name | De naam van de contextvariabele die een antwoordobject ontvangt. Als de variabele niet bestaat, wordt deze gemaakt na een geslaagde uitvoering van het beleid en wordt deze toegankelijk via context.Variable verzameling. Beleidsexpressies zijn toegestaan. |
Ja | N.v.t. |
timeout | Het time-outinterval in seconden voordat de aanroep naar de URL mislukt. Beleidsexpressies zijn toegestaan. | Nee | 60 |
ignore-error | Als true en de aanvraag resulteert in een fout, wordt de fout genegeerd en bevat de antwoordvariabele een null-waarde. Beleidsexpressies zijn niet toegestaan. |
Nee | false |
Elementen
Element | Beschrijving | Vereist |
---|---|---|
set-URL | De URL van de aanvraag. Beleidsexpressies zijn toegestaan. | Nee, anders mode=copy ja. |
set-method | Hiermee stelt u de methode van de aanvraag in. Beleidsexpressies zijn niet toegestaan. | Nee, anders mode=copy ja. |
set-header | Hiermee stelt u een header in de aanvraag in. Gebruik meerdere set-header elementen voor meerdere aanvraagheaders. |
Nee |
set-body | Hiermee stelt u de hoofdtekst van de aanvraag in. | Nee |
verificatiecertificaat | Certificaat dat moet worden gebruikt voor clientverificatie, opgegeven in een thumbprint kenmerk. |
Nee |
proxy | Routeert aanvraag via HTTP-proxy. | Nee |
Gebruik
- Beleidssecties: inkomende, uitgaande, back-end, on-error
- Beleidsbereik: globaal, werkruimte, product, API, bewerking
- Gateways: toegewezen, verbruik, zelf-hostend, werkruimte
Gebruiksnotities
Als uw API Management-exemplaar is geïmplementeerd (geïnjecteerd) in een VNet in de interne modus en u dit beleid gebruikt om een API-aanvraag te verzenden naar een API die wordt weergegeven in hetzelfde API Management-exemplaar, kan er een time-out optreden met een HTTP 500 BackendConnectionFailure-fout. Dit is het resultaat van een beperking van Azure Load Balancer.
Als u API-aanvragen wilt koppelen aan de gateway in dit scenario, configureert u set-url
voor het gebruik van de localhost-loopback-URL https://127.0.0.1
. Stel bovendien de header in om de HOST
gatewayhost van dit API Management-exemplaar op te geven. U kunt de standaardinstelling azure-api.net
of uw aangepaste domeinhost gebruiken. Voorbeeld:
<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>
Zie dit blogbericht voor meer informatie.
Opmerking
In dit voorbeeld ziet u een manier om een referentietoken met een autorisatieserver te verifiëren. Zie Externe services van de Azure API Management-service gebruiken voor meer informatie over dit voorbeeld.
<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>
Gerelateerd beleid
Gerelateerde inhoud
Zie voor meer informatie over het werken met beleid:
- Zelfstudie: Uw API transformeren en beveiligen
- Beleidsreferentie voor een volledige lijst met beleidsinstructies en hun instellingen
- Beleidsexpressies
- Beleid instellen of bewerken
- Beleidsconfiguraties opnieuw gebruiken
- Beleidsfragmentenopslagplaats
- Beleid ontwerpen met Behulp van Microsoft Copilot in Azure