Igénylés beküldése

A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint

A send-request szabályzat elküldi a megadott kérést a megadott URL-címre, és nem vár tovább a megadott időtúllépési értéknél.

Feljegyzés

Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.

Szabályzatutasítás

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

Attribútumok

Attribútum Leírás Kötelező Alapértelmezett
mód Meghatározza, hogy ez egy new kérés, vagy copy az aktuális kérelem fejléceinek és törzsének egy része. A kimenő szabályzat szakaszban mode=copy nem inicializálja a kérelem törzsét. A szabályzatkifejezések engedélyezettek. Nem new
response-variable-name A válaszobjektumot fogadó környezeti változó neve. Ha a változó nem létezik, a szabályzat sikeres végrehajtásakor jön létre, és gyűjteményen keresztül context.Variable lesz elérhető. A szabályzatkifejezések engedélyezettek. Igen n/a
timeout Az URL-cím hívásának meghiúsulása előtt másodpercekben megadott időtúllépési időköz. A szabályzatkifejezések engedélyezettek. Nem 60
ignore-error Ha true a kérés hibát eredményez, a rendszer figyelmen kívül hagyja a hibát, és a válaszváltozó null értéket tartalmaz. A szabályzatkifejezések nem engedélyezettek. Nem false

Elemek

Elem Leírás Kötelező
set-url A kérés URL-címe. A szabályzatkifejezések engedélyezettek. Nem, ha mode=copy; egyébként igen.
set-method Beállítja a kérés metódusát. A szabályzatkifejezések nem engedélyezettek. Nem, ha mode=copy; egyébként igen.
set-header Beállít egy fejlécet a kérelemben. Több set-header elem használata több kérelemfejléchez. Nem
set-body Beállítja a kérelem törzsét. Nem
hitelesítés-tanúsítvány Egy attribútumban thumbprint megadott ügyfélhitelesítéshez használandó tanúsítvány. Nem
Proxy A kérelem átirányítása HTTP-proxyn keresztül. Nem

Használat

Használati megjegyzések

Ha az API Management-példány belső módban van üzembe helyezve (injektálva) egy virtuális hálózaton, és ezzel a szabályzattal api-kérést küld egy olyan API-nak, amely ugyanabban az API Management-példányban van közzétéve, előfordulhat, hogy egy HTTP 500 háttérrendszerbeli Csatlakozás ionFailure-hibával időtúllépést tapasztal. Ez egy Azure Load Balancer-korlátozás eredménye.

Ebben a forgatókönyvben az API-kérések átjáróhoz való láncolásához konfigurálja set-url a localhost-visszacsatolási URL-címet https://127.0.0.1. Emellett állítsa be a HOST fejlécet az API Management-példány átjáró-gazdagépének megadására. Használhatja az alapértelmezett azure-api.net vagy az egyéni tartománygazdát. Példa:

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

További információkért tekintse meg ezt a blogbejegyzést.

Példa

Ez a példa bemutatja, hogyan ellenőrizheti a referencia-jogkivonatot egy engedélyezési kiszolgálóval. A mintával kapcsolatos további információkért lásd : Az Azure API Management szolgáltatás külső szolgáltatásainak használata.

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

A szabályzatok használatával kapcsolatos további információkért lásd: