Anforderung senden
GILT FÜR: Alle API Management-Ebenen
Die send-request
-Richtlinie sendet die bereitgestellte Anforderung an die angegebene URL und wartet nicht länger, als durch den Zeitüberschreitungswert festgelegt ist.
Hinweis
Legen Sie die Elemente und untergeordneten Elemente einer Richtlinie in der Reihenfolge fest, die in der Richtlinienanweisung angegeben ist. Erfahren Sie mehr darüber, wie Sie API Management-Richtlinien festlegen oder bearbeiten.
Richtlinienanweisung
<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>
Attribute
Attribut | BESCHREIBUNG | Erforderlich | Standard |
---|---|---|---|
Modus | Bestimmt, ob es sich um eine new -Anforderung oder eine copy von Header und Text in der aktuellen Anforderung handelt. Im Abschnitt für ausgehende Richtlinien initialisiert mode=copy den Anforderungstext nicht. Richtlinienausdrücke sind zulässig. |
Nein | new |
response-variable-name | Der Name der Kontextvariable, die ein Antwortobjekt empfängt. Wenn die Variable nicht vorhanden ist, wird sie bei erfolgreicher Ausführung der Richtlinie erstellt und ist dann über die Sammlung context.Variable zugänglich. Richtlinienausdrücke sind zulässig. |
Ja | – |
timeout | Das Zeitüberschreitungsintervall in Sekunden, bis für den Aufruf der URL ein Fehler auftritt. Richtlinienausdrücke sind zulässig. | Nein | 60 |
ignore-error | Wenn dies auf true festgelegt ist und die Anforderung zu einem Fehler führt, wird der Fehler ignoriert, und die Antwortvariable enthält einen NULL-Wert. Richtlinienausdrücke sind nicht zulässig. |
Nein | false |
Elemente
Element | BESCHREIBUNG | Erforderlich |
---|---|---|
set-url | Die URL der Anforderung. Richtlinienausdrücke sind zulässig. | Nein, wenn mode=copy , andernfalls ja. |
set-method | Legt die Methode der Anforderung fest. Richtlinienausdrücke sind nicht zulässig. | Nein, wenn mode=copy , andernfalls ja. |
set-header | Legt einen Header in der Anforderung fest. Verwenden Sie mehrere set-header -Elemente für mehrere Anforderungsheader. |
Nein |
set-body | Legt den Text der Anforderung fest. | Nein |
authentication-certificate | Zertifikat für die Clientauthentifizierung, angegeben in einem thumbprint -Attribut. |
Nein |
proxy | Leitet Anforderungen über den HTTP-Proxy weiter. | Nein |
Verwendung
- Richtlinienabschnitte: inbound, outbound, backend, on-error
- Richtlinienbereiche: global, Arbeitsbereich, Produkt, API, Vorgang
- Gateways: dediziert, Verbrauch, selbstgehostet, Arbeitsbereich
Hinweise zur Verwendung
Wenn Ihre API Management-Instanz in einem VNET im internen Modus bereitgestellt (eingefügt) wird und Sie diese Richtlinie verwenden, um eine API-Anforderung an eine API zu senden, die in der gleichen API Management-Instanz verfügbar gemacht wird, tritt möglicherweise ein Timeout mit einem HTTP 500 Back-EndConnectionFailure-Fehler auf. Dies ist das Ergebnis einer Azure Load Balancer-Einschränkung.
Damit API-Anforderungen in diesem Szenario mit dem Gateway verkettet werden, konfigurieren Sie set-url
so, dass die Localhost-Loopback-URL https://127.0.0.1
verwendet wird. Legen Sie zusätzlich den HOST
-Header fest, um den Gatewayhost dieser API Management-Instanz anzugeben. Sie können den Standardhost azure-api.net
oder Ihren benutzerdefinierten Domänenhost verwenden. Beispiel:
<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>
Weitere Informationen finden Sie in diesem Blogbeitrag.
Beispiel
In diesem Beispiel ist eine Möglichkeit dargestellt, wie Sie ein Verweistoken mit einem Autorisierungsserver überprüfen können. Weitere Informationen zu diesem Beispiel finden Sie unter Verwenden externer Dienste über den Azure API Management-Dienst.
<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>
Verwandte Richtlinien
Zugehöriger Inhalt
Weitere Informationen zum Arbeiten mit Richtlinien finden Sie hier:
- Tutorial: Transformieren und Schützen Ihrer API
- Unter Richtlinien für die API-Verwaltung finden Sie eine komplette Liste der Richtlinienanweisungen und der zugehörigen Einstellungen.
- Richtlinienausdrücke
- Festlegen oder Bearbeiten von Richtlinien
- Wiederverwenden von Richtlinienkonfigurationen
- Repository für Richtliniencodeausschnitte
- Erstellen von Richtlinien mit Microsoft Copilot in Azure