Skicka begäran
GÄLLER FÖR: Alla API Management-nivåer
Principen send-request
skickar den angivna begäran till den angivna URL:en och väntar inte längre än det angivna tidsgränsvärdet.
Kommentar
Ange principens element och underordnade element i den ordning som anges i principbeskrivningen. Läs mer om hur du anger eller redigerar API Management-principer.
Principuttryck
<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>
Attribut
Attribut | beskrivning | Obligatoriskt | Standardvärde |
---|---|---|---|
läge | Avgör om det här är en new begäran eller en copy av rubrikerna och brödtexten i den aktuella begäran. I avsnittet mode=copy utgående princip initierar inte begärandetexten. Principuttryck tillåts. |
Nej | new |
response-variable-name | Namnet på kontextvariabeln som ska ta emot ett svarsobjekt. Om variabeln inte finns skapas den vid en lyckad körning av principen och blir tillgänglig via context.Variable samling. Principuttryck tillåts. |
Ja | Ej tillämpligt |
timeout | Tidsgränsintervallet i sekunder innan anropet till URL:en misslyckas. Principuttryck tillåts. | Nej | 60 |
ignore-error | Om true och begäran resulterar i ett fel ignoreras felet och svarsvariabeln innehåller ett null-värde. Principuttryck tillåts inte. |
Nej | false |
Element
Element | Description | Obligatoriskt |
---|---|---|
set-url | URL:en för begäran. Principuttryck tillåts. | Nej om mode=copy ; annars ja. |
set-method | Anger metoden för begäran. Principuttryck tillåts inte. | Nej om mode=copy ; annars ja. |
set-header | Anger ett huvud i begäran. Använd flera set-header element för flera begärandehuvuden. |
Nej |
set-body | Anger brödtexten för begäran. | Nej |
authentication-certificate | Certifikat som ska användas för klientautentisering, som anges i ett thumbprint attribut. |
Nej |
proxyserver | Routningsbegäran via HTTP-proxy. | Nej |
Förbrukning
- Principavsnitt: inkommande, utgående, serverdel, on-error
- Principomfattningar: global, arbetsyta, produkt, API, åtgärd
- Gatewayer: dedikerad, förbrukning, lokalt installerad, arbetsyta
Användningsanteckningar
Om din API Management-instans distribueras (matas in) i ett virtuellt nätverk i internt läge och du använder den här principen för att skicka en API-begäran till ett API som exponeras i samma API Management-instans, kan det uppstå en timeout med ett HTTP 500 BackendConnectionFailure-fel. Detta är resultatet av en begränsning för Azure Load Balancer.
Om du vill länka API-begäranden till gatewayen i det här scenariot konfigurerar du set-url
för att använda localhost-loopback-URL:en https://127.0.0.1
. Ange dessutom HOST
huvudet för att ange den här API Management-instansens gatewayvärd. Du kan använda standardvärden azure-api.net
eller den anpassade domänvärden. Till exempel:
<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>
Mer information finns i detta blogginlägg.
Exempel
Det här exemplet visar ett sätt att verifiera en referenstoken med en auktoriseringsserver. Mer information om det här exemplet finns i Använda externa tjänster från Azure API Management-tjänsten.
<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>
Relaterade principer
Relaterat innehåll
Mer information om hur du arbetar med principer finns i:
- Självstudie: Transformera och skydda ditt API
- Principreferens för en fullständig lista över principinstruktioner och deras inställningar
- Principuttryck
- Ange eller redigera principer
- Återanvända principkonfigurationer
- Lagringsplats för principfragment
- Principverktyg för Azure API Management
- Skapa principer med Microsoft Copilot i Azure