Wyślij wniosek
DOTYCZY: Wszystkie warstwy usługi API Management
Zasady send-request
wysyła podane żądanie do określonego adresu URL, czekając nie dłużej niż ustawiona wartość limitu czasu.
Uwaga
Ustaw elementy zasad i elementy podrzędne w kolejności podanej w instrukcji zasad. Dowiedz się więcej na temat ustawiania lub edytowania zasad usługi API Management.
Instrukcja zasad
<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>
Atrybuty
Atrybut | opis | Wymagani | Wartość domyślna |
---|---|---|---|
tryb | Określa, czy jest new to żądanie, czy copy treść nagłówków i treści w bieżącym żądaniu. W sekcji mode=copy zasad ruchu wychodzącego nie inicjuje treści żądania. Wyrażenia zasad są dozwolone. |
Nie. | new |
nazwa-zmiennej odpowiedzi | Nazwa zmiennej kontekstowej, która otrzyma obiekt odpowiedzi. Jeśli zmienna nie istnieje, zostanie utworzona po pomyślnym wykonaniu zasad i stanie się dostępna za pośrednictwem context.Variable kolekcji. Wyrażenia zasad są dozwolone. |
Tak | Nie dotyczy |
timeout | Interwał limitu czasu w sekundach przed niepowodzeniem wywołania adresu URL. Wyrażenia zasad są dozwolone. | Nie. | 60 |
ignoruj błąd | Jeśli true żądanie spowoduje wystąpienie błędu, błąd zostanie zignorowany, a zmienna odpowiedzi będzie zawierać wartość null. Wyrażenia zasad nie są dozwolone. |
Nie. | false |
Elementy
Element | opis | Wymagania |
---|---|---|
set-url | Adres URL żądania. Wyrażenia zasad są dozwolone. | Nie, jeśli mode=copy ; w przeciwnym razie tak. |
set-method | Ustawia metodę żądania. Wyrażenia zasad nie są dozwolone. | Nie, jeśli mode=copy ; w przeciwnym razie tak. |
set-header | Ustawia nagłówek w żądaniu. Użyj wielu set-header elementów dla wielu nagłówków żądań. |
Nie. |
set-body | Ustawia treść żądania. | Nie. |
uwierzytelnianie certyfikatu | Certyfikat do użycia na potrzeby uwierzytelniania klienta określonego w atrybucie thumbprint . |
Nie. |
proxy | Kieruje żądanie za pośrednictwem serwera proxy HTTP. | Nie. |
Użycie
- Sekcje zasad: ruch przychodzący, wychodzący, zaplecze, błąd
- Zakresy zasad: globalny, obszar roboczy, produkt, interfejs API, operacja
- Bramy: dedykowane, zużycie, self-hosted, obszar roboczy
Uwagi dotyczące użycia
Jeśli wystąpienie usługi API Management jest wdrażane (wstrzykiwane) w sieci wirtualnej w trybie wewnętrznym i używasz tych zasad do wysyłania żądania interfejsu API do interfejsu API uwidocznionego w tym samym wystąpieniu usługi API Management, może wystąpić przekroczenie limitu czasu z błędem HTTP 500 BackendConnectionFailure. Jest to wynik ograniczenia usługi Azure Load Balancer.
Aby połączyć żądania interfejsu API z bramą w tym scenariuszu, skonfiguruj adres set-url
URL https://127.0.0.1
sprzężenia zwrotnego localhost. Ponadto ustaw HOST
nagłówek, aby określić hosta bramy tego wystąpienia usługi API Management. Możesz użyć domyślnego azure-api.net
lub niestandardowego hosta domeny. Na przykład:
<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>
Aby uzyskać więcej informacji, zobacz ten wpis w blogu.
Przykład
W tym przykładzie pokazano jeden ze sposobów weryfikacji tokenu referencyjnego przy użyciu serwera autoryzacji. Aby uzyskać więcej informacji na temat tego przykładu, zobacz Używanie usług zewnętrznych z usługi 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>
Powiązane zasady
Powiązana zawartość
Aby uzyskać więcej informacji na temat pracy z zasadami, zobacz:
- Samouczek: przekształcanie i ochrona interfejsu API
- Dokumentacja zasad dla pełnej listy instrukcji zasad i ich ustawień
- Wyrażenia zasad
- Ustawianie lub edytowanie zasad
- Ponowne używanie konfiguracji zasad
- Repozytorium fragmentów zasad
- Tworzenie zasad przy użyciu rozwiązania Microsoft Copilot na platformie Azure