İ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=copyevet.
set-method İsteğin yöntemini ayarlar. İlke ifadelerine izin verilmez. Hayır, değilse mode=copyevet.
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

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 Arka Uç Bağlan ionFailure 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.1kullanacak ş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>

İlkelerle çalışma hakkında daha fazla bilgi için bkz: