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=copy ano. |
set-method | Nastaví metodu požadavku. Výrazy zásad nejsou povolené. | Ne, jinak mode=copy ano. |
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.1
zpě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>
Související zásady
Související obsah
Další informace o práci se zásadami najdete v tématech:
- Kurz: Transformace a ochrana rozhraní API
- Referenční informace o zásadách pro úplný seznam prohlášení o zásadách a jejich nastavení
- Výrazy zásad
- Nastavení nebo úprava zásad
- Opakované použití konfigurací zásad
- Úložiště fragmentů zásad
- Vytváření zásad pomocí Microsoft Copilotu v Azure