İstek gönderin
UYGULANANLAR: Tüm API Management katmanları
İlke send-request
, belirtilen URL'ye sağlanan isteği gönderir ve ayarlanan zaman aşımı değerinden daha uzun süre beklemez.
Not
İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.
İlke bildirimi
<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>
Özellikler
Öznitelik | Açıklama | Zorunlu | Varsayılan |
---|---|---|---|
mod | Bunun bir new istek mi yoksa geçerli istekteki üst bilgi ve gövdelerden biri copy mi olduğunu belirler. Giden ilkesi bölümünde, mode=copy istek gövdesini başlatmaz. İlke ifadelerine izin verilir. |
Hayır | new |
response-variable-name | Yanıt nesnesi alacak bağlam değişkeninin adı. Değişken yoksa, ilkenin başarıyla yürütülmesiyle oluşturulur ve koleksiyon aracılığıyla context.Variable erişilebilir hale gelir. İlke ifadelerine izin verilir. |
Yes | Yok |
timeout | URL çağrısı başarısız olmadan önce saniye cinsinden zaman aşımı aralığı. İlke ifadelerine izin verilir. | Hayır | 60 |
ignore-error | ve true isteği bir hatayla sonuçlanırsa, hata yoksayılır ve yanıt değişkeni null değer içerir. İlke ifadelerine izin verilmez. |
Hayır | false |
Öğeler
Öğe | Açıklama | Gerekli |
---|---|---|
set-url | İsteğin URL'si. İlke ifadelerine izin verilir. | Hayır, değilse mode=copy evet. |
set-method | İsteğin yöntemini ayarlar. İlke ifadelerine izin verilmez. | Hayır, değilse mode=copy evet. |
set-header | İstekte bir üst bilgi ayarlar. Birden çok set-header istek üst bilgisi için birden çok öğe kullanın. |
Hayır |
set-body | İsteğin gövdesini ayarlar. | Hayır |
kimlik doğrulama sertifikası |
Bir öznitelikte thumbprint belirtilen istemci kimlik doğrulaması için kullanılacak sertifika. |
Hayır |
proxy | İsteği HTTP ara sunucusu aracılığıyla yönlendirir. | Hayır |
Kullanım
- İlke bölümleri: gelen, giden, arka uç, hatada
- İlke kapsamları: genel, çalışma alanı, ürün, API, işlem
- Ağ geçitleri: ayrılmış, tüketim, şirket içinde barındırılan, çalışma alanı
Kullanım notları
API Management örneğiniz iç modda bir sanal ağa dağıtılır (eklenir) ve aynı API Management örneğinde kullanıma sunulan bir API'ye API isteği göndermek için bu ilkeyi kullanırsanız, HTTP 500 BackendConnectionFailure hatasıyla zaman aşımıyla karşılaşabilirsiniz. Bu, Azure Load Balancer sınırlamasının sonucudur.
Bu senaryoda API isteklerini ağ geçidine zincirleme için localhost geri döngü URL'sini https://127.0.0.1
kullanacak şekilde yapılandırınset-url
. Ayrıca, üst bilgiyi bu API Management örneğinin ağ geçidi ana bilgisayarını belirtecek şekilde ayarlayın HOST
. Varsayılan azure-api.net
veya özel etki alanı konağınızı kullanabilirsiniz. Örneğin:
<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>
Daha fazla bilgi için bu blog gönderisine bakın.
Örnek
Bu örnekte, bir yetkilendirme sunucusuyla başvuru belirtecini doğrulamanın bir yolu gösterilmektedir. Bu örnek hakkında daha fazla bilgi için bkz . Azure API Management hizmetinden dış hizmetleri kullanma.
<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>
İlgili ilkeler
İlgili içerik
İlkelerle çalışma hakkında daha fazla bilgi için bkz:
- Öğretici: API'nizi dönüştürme ve koruma
- İlke deyimlerinin ve ayarlarının tam listesi için ilke başvurusu
- İlke ifadeleri
- İlkeleri ayarlama veya düzenleme
- İlke yapılandırmalarını yeniden kullanma
- İlke kod parçacıkları deposu
- Azure API Management ilke araç seti
- Azure'da Microsoft Copilot kullanarak ilke yazma