Sdílet prostřednictvím


Odeslat žádost

PLATÍ PRO: Všechny úrovně služby API Management

Zásada send-request odešle zadaný požadavek na zadanou adresu URL a nečeká déle, než je nastavená hodnota časového limitu.

Poznámka:

Nastavte prvky zásad a podřízené prvky v pořadí uvedeném v prohlášení o zásadách. Přečtěte si další informace o tom, jak nastavit nebo upravit zásady služby API Management.

Prohlášení o zásadách

<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>

Atributy

Atribut Popis Požaduje se Výchozí
režim Určuje, jestli se jedná o new požadavek, nebo copy hlavičku a text v aktuálním požadavku. V části mode=copy odchozí zásady neicializuje text požadavku. Výrazy zásad jsou povolené. No new
response-variable-name Název kontextové proměnné, která obdrží objekt odpovědi. Pokud proměnná neexistuje, vytvoří se po úspěšném spuštění zásady a bude přístupná prostřednictvím context.Variable kolekce. Výrazy zásad jsou povolené. Yes
timeout Interval časového limitu v sekundách před selháním volání adresy URL. Výrazy zásad jsou povolené. No 60
ignore-error Pokud true a výsledkem požadavku je chyba, bude chyba ignorována a proměnná odpovědi bude obsahovat hodnotu null. Výrazy zásad nejsou povolené. No false

Elementy

Element (Prvek) Popis Povinní účastníci
set-url Adresa URL požadavku. Výrazy zásad jsou povolené. Ne, jinak mode=copyano.
set-method Nastaví metodu požadavku. Výrazy zásad nejsou povolené. Ne, jinak mode=copyano.
set-header Nastaví hlavičku v požadavku. Pro více hlaviček požadavků použijte více set-header prvků. No
set-body Nastaví text požadavku. No
authentication-certificate Certifikát, který se má použít pro ověřování klienta, zadaný v atributu thumbprint . No
plná moc Směruje požadavek prostřednictvím proxy serveru HTTP. No

Využití

  • Oddíly zásad: příchozí, odchozí, back-end, on-error
  • Obory zásad: globální, pracovní prostor, produkt, rozhraní API, operace
  • Brány: vyhrazená, spotřeba, místní prostředí, pracovní prostor

Poznámky k využití

Pokud je vaše instance služby API Management nasazená (vložená) do virtuální sítě v interním režimu a pomocí této zásady odešlete požadavek rozhraní API do rozhraní API, které je vystavené ve stejné instanci služby API Management, může dojít k vypršení časového limitu s chybou HTTP 500 BackendConnectionFailure. Jedná se o výsledek omezení Azure Load Balanceru.

Pokud chcete zřetězovat požadavky rozhraní API na bránu v tomto scénáři, nakonfigurujte set-url použití adresy URL https://127.0.0.1zpětné smyčky localhost . Dále nastavte hlavičku HOST tak, aby určila hostitele brány této instance služby API Management. Můžete použít výchozí azure-api.net nebo vlastního hostitele domény. Příklad:

<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>

Další informace najdete v tomto blogovém příspěvku.

Příklad

Tento příklad ukazuje jeden ze způsobů, jak ověřit referenční token pomocí autorizačního serveru. Další informace o této ukázce najdete v tématu Použití externích služeb ze služby Azure API Management.

<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>

Další informace o práci se zásadami najdete v tématech: