Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 newbegäran eller encopyav rubrikerna och brödtexten i den aktuella begäran. I avsnittetmode=copyutgå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.Variablesamling. Principuttryck tillåts. | Ja | Ej tillämpligt | 
| vilopaus | Tidsgränsintervallet i sekunder innan anropet till URL:en misslyckas. Principuttryck tillåts. | Nej | 60 | 
| ignore-error | Om trueoch begäran resulterar i ett fel ignoreras felet och svarsvariabeln innehåller ett null-värde. Principuttryck tillåts inte. | Nej | false | 
Element
| Komponent | beskrivning | Obligatoriskt | 
|---|---|---|
| set-url | URL:en för begäran. Principuttryck tillåts. | Nej om mode=copy; annars ja. | 
| inställningsmetod | 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-headerelement för flera begärandehuvuden. | Nej | 
| set-body | Anger brödtexten för begäran. | Nej | 
| autentiseringscertifikat | Certifikat som ska användas för klientautentisering, som anges i ett thumbprintattribut. | 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
- Lagringsplats för principlekplats
- Principverktyg för Azure API Management
- Få Hjälp med Copilot för att skapa, förklara och felsöka principer