Azure Logic Apps'teki iş akışlarından dış HTTP veya HTTPS uç noktalarını çağırma

Şunlar için geçerlidir: Azure Logic Apps (Tüketim + Standart)

Bazı senaryolar, HTTP veya HTTPS üzerinden diğer hizmet veya sistemlerdeki uç noktalara giden istekler gönderen bir mantıksal uygulama iş akışı oluşturmanızı gerektirebilir. Örneğin, belirli bir zamanlamaya göre bu uç noktayı denetleyerek web siteniz için bir hizmet uç noktasını izlemek istediğinizi varsayalım. Web sitenizin kapanması gibi belirli bir olay söz konusu uç noktada gerçekleştiğinde, bu olay iş akışınızı tetikler ve bu iş akışındaki eylemleri çalıştırır.

Uyarı

Bunun yerine gelen HTTPS çağrılarını alan ve yanıtlayan bir iş akışı oluşturmak için bkz. Azure Logic Apps'te HTTPS uç noktalarını kullanarak çağırabileceğiniz, tetikleyebileceğiniz veya iç içe yerleştirebileceğiniz iş akışları oluşturma. İstek yerleşik tetikleyicisini kullanmak için bkz. Azure Logic Apps'te iş akışlarına gelen HTTPS çağrılarını alma ve yanıtlama.

Bu kılavuzda, iş akışınızın diğer hizmetlere ve sistemlere giden çağrılar gönderebilmesi için HTTP tetikleyicisi ve HTTP eyleminin nasıl kullanılacağı gösterilmektedir, örneğin:

  • Yinelenen bir zamanlamaya göre bir uç noktayı kontrol etmek veya anket yapmak için, iş akışınızın ilk adımı olarak HTTP adlı yerleşik tetikleyiciyi ekleyin. Tetikleyici uç noktayı her denetleyişinde, tetikleyici uç noktaya bir istek çağırır veya gönderir. İş akışınızın çalıştırılıp çalıştırılmayacağını uç noktanın yanıtı belirler. Tetikleyici, uç noktanın yanıtından iş akışınızdaki eylemlere tüm içeriği geçirir.

  • İş akışınızda başka herhangi bir yerden uç noktayı çağırmak için HTTP adlı yerleşik eylemi ekleyin. Uç noktanın yanıtı, iş akışınızın kalan eylemlerinin nasıl çalıştığını belirler.

Önkoşullar

Bağlayıcı teknik referans

Tetikleyici ve eylem parametreleri hakkında teknik bilgi için şema başvuru kılavuzundaki aşağıdaki bölümlere bakın:

HTTP tetikleyicisi ekleme

Bu yerleşik tetikleyici, bir uç nokta için belirtilen URL'ye http çağrısı yapar ve bir yanıt döndürür.

  1. Azure portalında Standart mantıksal uygulama kaynağınızı açın.

  2. Kaynak kenar çubuğu menüsündeki İş Akışları'nın altında İş Akışları'nı ve ardından boş iş akışınızı seçin.

  3. İş akışı kenar çubuğu menüsündeki Araçlar'ın altında iş akışını açmak için tasarımcıyı seçin.

  4. Tetikleyici eklemek için genel adımları izleyerek IŞ akışınıza HTTP yerleşik tetikleyicisini ekleyin.

    Bu örnek tetikleyiciyi HTTP tetikleyicisi olarak yeniden adlandırır - Tetikleyicinin daha açıklayıcı bir ada sahip olması için uç nokta URL'sini çağırın . Ayrıca, örnek daha sonra bir HTTP eylemi ekler ve iş akışınızdaki işlem adları benzersiz olmalıdır.

  5. Hedef uç noktaya yapılan çağrıya eklemek istediğiniz HTTP tetikleyici parametrelerinin değerlerini sağlayın. Tetikleyicinin hedef uç noktayı denetlemesini istediğiniz sıklıkta yinelenmeyi ayarlayın.

  6. Gelişmiş parametreler listesinden Kimlik Doğrulaması'nı seçin.

    Hiçbiri dışında bir kimlik doğrulama türü seçerseniz, kimlik doğrulama ayarları seçiminize göre farklılık gösterir. HTTP için kullanılabilen kimlik doğrulama türleri hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

  7. Tetikleyici tetiklendiğinde çalıştırmak istediğiniz diğer eylemleri ekleyin.

  8. İşiniz bittiğinde iş akışınızı kaydedin. Tasarımcı araç çubuğunda Kaydet'i seçin.

HTTP eylemi ekleme

Bu yerleşik eylem, bir uç nokta için belirtilen URL'ye bir HTTPS veya HTTP çağrısı gönderir ve bir yanıtla döndürür.

  1. Azure portalında Standart mantıksal uygulama kaynağınızı açın.

  2. Kaynak kenar çubuğu menüsündeki İş Akışları'nın altında İş Akışları'nı ve ardından iş akışınızı seçin.

  3. İş akışı kenar çubuğu menüsündeki Araçlar'ın altında iş akışını açmak için tasarımcıyı seçin.

    Bu örnek, önceki bölümde eklenen HTTP tetikleyicisini kullanır.

  4. Eylem eklemek için genel adımları izleyerek iş akışınıza HTTP yerleşik eylemini ekleyin.

    Bu örnek, eylemi HTTP eylemi olarak yeniden adlandırır - Eylemin daha açıklayıcı bir ada sahip olması için uç nokta URL'sini çağırın . Ayrıca, iş akışınızdaki işlem adları benzersiz olmalıdır.

  5. Hedef uç noktaya yapılan çağrıya eklemek istediğiniz HTTP eylem parametrelerinin değerlerini sağlayın.

  6. Gelişmiş parametreler listesinden Kimlik Doğrulaması'nı seçin.

    Hiçbiri dışında bir kimlik doğrulama türü seçerseniz, kimlik doğrulama ayarları seçiminize göre farklılık gösterir. HTTP için kullanılabilen kimlik doğrulama türleri hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

  7. Tetikleyici tetiklendiğinde çalıştırmak istediğiniz diğer eylemleri ekleyin.

  8. İşiniz bittiğinde iş akışınızı kaydedin. Tasarımcı araç çubuğunda Kaydet'i seçin.

Tetikleyici ve eylem çıkışları

HTTP tetikleyicisi veya eylemi aşağıdaki bilgileri döndürür:

Mülkiyet Türü Açıklama
headers JSON nesnesi İstekten alınan üst bilgiler
body JSON nesnesi İstekten gövde içeriğine sahip nesne
status code Tam sayı İstekten gelen durum kodu
Durum kodu Açıklama
200 Tamam
202 Kabul edildi
400 Hatalı istek
401 Yetkisiz
403 Yasak
404 Bulunamadı
beş yüz İç sunucu hatası. Bilinmeyen bir hata oluştu.

Giden aramalar için URL güvenliği

Aktarım Katmanı Güvenliği (TLS), otomatik olarak imzalanan sertifikalar veya Microsoft Entra ID Open Authentication gibi iş akışınızdan gelen giden çağrılar için şifreleme, güvenlik ve yetkilendirme hakkında bilgi için bkz. Diğer hizmetlere ve sistemlere giden çağrılar için erişim.

Tek kiracılı ortam için kimlik doğrulaması

Tek kiracılı Azure Logic Apps'te Standart mantıksal uygulama kaynağınız varsa ve aşağıdaki kimlik doğrulama türlerinden herhangi biriyle http işlemi kullanmak istiyorsanız, ilgili kimlik doğrulama türü için ek kurulum adımlarını tamamladığınızdan emin olun. Aksi takdirde çağrı başarısız olur.

TLS sertifika kimlik doğrulaması

  1. Mantıksal uygulama kaynağınızın uygulama ayarlarında adlı WEBSITE_LOAD_ROOT_CERTIFICATESuygulama ayarını ekleyin veya güncelleştirin. Belirli adımlar için bkz. Uygulama ayarlarını yönetme - local.settings.json.

  2. Ayar değeri için, TLS sertifikanızın parmak izini güvenilecek kök sertifika olarak sağlayın.

    "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS-certificate>"

Örneğin, Visual Studio Code'da çalışıyorsanız şu adımları izleyin:

  1. Mantıksal uygulama projenizin local.settings.json dosyasını açın.

  2. JSON nesnesinde Values ayarını ekleyin veya WEBSITE_LOAD_ROOT_CERTIFICATES ayarını güncelleyin.

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",
          "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS-certificate>",
          <...>
       }
    }
    

Uyarı

Parmak izini bulmak için şu adımları izleyin:

  • Mantıksal uygulama kaynak menünüzün Ayarlar'ın altında Sertifikalar'ı seçin.
  • Kendi sertifikalarınızı getir (.pfx) veya Ortak anahtar sertifikalarınızı (.cer) seçin.
  • Kullanmak istediğiniz sertifikayı bulun ve parmak izini kopyalayın.

Daha fazla bilgi için bkz. Parmak izini bulma - Azure App Service.

Daha fazla bilgi için bkz. Uygulama ayarlarını yönetme - local.settings.json.

Client sertifikası veya Microsoft Entra ID OAuth Sertifika kimlik bilgisi türü kimlik doğrulaması

  1. Mantıksal uygulama kaynağınızın uygulama ayarlarında adlı WEBSITE_LOAD_USER_PROFILEuygulama ayarını ekleyin veya güncelleştirin. Belirli adımlar için bkz. Uygulama ayarlarını yönetme - local.settings.json

  2. Ayar değeri için 1 belirtin.

    "WEBSITE_LOAD_USER_PROFILE": "1"

Örneğin, Visual Studio Code'da çalışıyorsanız şu adımları izleyin:

  1. Mantıksal uygulama projenizin local.settings.json dosyasını açın.

  2. JSON nesnesinde Values ayarını ekleyin veya WEBSITE_LOAD_USER_PROFILE ayarını güncelleyin.

    {
       "IsEncrypted": false,
       "Values": {
          <...>
          "AzureWebJobsStorage": "UseDevelopmentStorage=true",
          "WEBSITE_LOAD_USER_PROFILE": "1",
          <...>
       }
    }
    

Azure portalında çalışıyorsanız mantıksal uygulamanızı açın. Kenar çubuğu menüsündeki Ayarlar'ın altında Ortam değişkenleri'ni seçin. Uygulama ayarları'nın altında ayarı ekleyin veya düzenleyin.

Çok parçalı/form-veri türüne sahip içerik

HTTP isteklerinde türü olan multipart/form-data içeriği işlemek için, bu biçimi kullanarak HTTP isteğinin gövdesindeki $content-type ve $multipart özniteliklerini içeren bir JSON nesnesi ekleyebilirsiniz.

"body": {
   "$content-type": "multipart/form-data",
   "$multipart": [
      {
         "body": "<output-from-trigger-or-previous-action>",
         "headers": {
            "Content-Disposition": "form-data; name=file; filename=<file-name>"
         }
      }
   ]
}

Örneğin, sitenin API'sini kullanarak Excel dosyası için web sitesine HTTP POST isteği gönderen multipart/form-data türünü destekleyen bir iş akışınızın olduğunu varsayın. Aşağıdaki örnek, bu eylemin nasıl görünebileceğini gösterir:

HTTP eylemi ve çok parçalı form verileriyle iş akışını gösteren ekran görüntüsü.

Temel alınan iş akışı tanımında HTTP eyleminin JSON tanımını gösteren örnek aşağıda verilmiştir:

"HTTP_action": {
   "inputs": {
      "body": {
         "$content-type": "multipart/form-data",
         "$multipart": [
            {
               "body": "@trigger()",
               "headers": {
                  "Content-Disposition": "form-data; name=file; filename=myExcelFile.xlsx"
               }
            }
         ]
      },
      "method": "POST",
      "uri": "https://finance.contoso.com"
   },
   "runAfter": {},
   "type": "Http"
}

Uygulama/x-www-form-urlencoded türüne sahip içerik

Bir HTTP isteğinin gövdesinde form-urlencoded bir veri sağlamak için, verinin application/x-www-form-urlencoded içerik türüne sahip olduğunu belirtmeniz gerekir. HTTP tetikleyicisine veya eylemine content-type üst bilgiyi ekleyin. Üst bilgi değerini application/x-www-form-urlencoded olarak ayarlayın.

Örneğin, türünü destekleyen application/x-www-form-urlencoded bir web sitesine HTTP POST isteği gönderen bir mantıksal uygulamanız olduğunu varsayalım. Bu eylem şöyle görünebilir:

HTTP isteği ve içerik türü üst bilgisinin application slash x-www-form-urlencoded olarak ayarlandığı iş akışını gösteren ekran görüntüsü.

Zaman uyumsuz istek-yanıt davranışı

Hem çok kiracılı hem de tek kiracılı Azure Logic Apps'teki durum bilgisi olan iş akışları için, tüm HTTP tabanlı eylemler varsayılan davranış olarak standart zaman uyumsuz işlem desenini izler. Bu düzen, BIR HTTP eylemi uç nokta, hizmet, sistem veya API'ye istek gönderdikten veya çağırdıktan sonra alıcının hemen 202 ACCEPTED yanıtı döndürdüğünü belirtir. Bu kod, alıcının isteği kabul ettiğini ancak işlenmesinin tamamlanmadığını onaylar. Yanıt, alıcı işlemi durdurup location olmayan başka bir yanıt döndürene kadar çağıranın zaman uyumsuz isteği yoklama veya denetleme için kullanabileceği URI'yi ve yenileme kimliğini belirten bir üst bilgi içerebilir. Ancak, çağıranın isteğin işlenmesini beklemesi gerekmez ve sonraki eylemi yürütmeye devam edebilir. Daha fazla bilgi için bkz . Zaman uyumlu ve zaman uyumsuz mesajlaşma.

Tek kiracılı Azure Logic Apps'teki durum bilgisi olmayan iş akışları için HTTP tabanlı eylemler zaman uyumsuz işlem desenini kullanmaz. Bunun yerine, yalnızca zaman uyumlu olarak çalışır, as-is202 ACCEPTED yanıtını döndürür ve iş akışı yürütmesinde bir sonraki adıma geçer. Yanıt bir location üst bilgi içeriyorsa, durum bilgisi olmayan bir iş akışı durumu denetlemek için belirtilen URI'yi yoklamaz. Standart zaman uyumsuz işlem desenini izlemek için bunun yerine durum bilgisi olan bir iş akışı kullanın.

  • HTTP eyleminin temel JSON tanımı zaman uyumsuz işlem desenini örtük olarak izler.

  • HTTP eylemi, tetikleyici haricinde, varsayılan olarak etkin olan bir Asenkron desen ayarına sahiptir. Bu ayar, çağıranın işlemin tamamlanmasını beklemediğini ve sonraki eyleme geçebileceğini ancak işleme durdurulana kadar durumu denetlemeye devam ettiğini belirtir. Devre dışı bırakılırsa, bu ayar çağıranın bir sonraki eyleme geçmeden önce işlemin tamamlanmasını beklediğini belirtir.

    Asenkron desen ayarını bulmak için:

    1. İş akışı tasarımcısında HTTP eylemini seçin.
    2. Açılan bilgi bölmesinde Ayarlar'ı seçin.
    3. Ağ başlığı altındaAsenkron Desen ayarını bulun.

Zaman uyumsuz işlemleri devre dışı bırakma

Bazen, örneğin aşağıdakileri yapmak istediğinizde belirli senaryolarda HTTP eyleminin zaman uyumsuz davranışını devre dışı bırakmak isteyebilirsiniz:

Zaman uyumsuz desen ayarını kapatma

  1. İş akışı tasarımcısında HTTP eylemini seçin ve açılan bilgi bölmesinde Ayarlar'ı seçin.

  2. Ağ başlığı altındaAsenkron Desen ayarını bulun. Etkinleştirildiyse ayarı Kapalı olarak ayarlayın.

Eylemin JSON tanımında zaman uyumsuz deseni devre dışı bırakma

HTTP eyleminin temel JSON tanımında, eylemin DisableAsyncPattern bunun yerine zaman uyumlu işlem desenini izlemesi için işlem seçeneğini eylemin tanımına ekleyin. Daha fazla bilgi için bkz. Eylemleri zaman uyumlu bir işlem düzeninde çalıştırma.

Uzun süre çalışan görevler için HTTP zaman aşımlarından kaçının

HTTP isteklerinin zaman aşımı sınırı vardır. Bu sınır nedeniyle zaman aşımına uğracak uzun süre çalışan bir HTTP eyleminiz varsa, şu seçenekleriniz vardır:

Retry-After üst bilgisi ile yeniden deneme girişimleri arasında aralık ayarlama

Yeniden deneme girişimleri arasındaki saniye sayısını belirtmek için üst bilgiyi HTTP eylem yanıtına ekleyebilirsiniz Retry-After . Örneğin, hedef uç nokta durum kodunu döndürürse 429 - Too many requests , yeniden denemeler arasında daha uzun bir aralık belirtebilirsiniz. Başlık, durum kodu Retry-After ile de çalışır.

İşte Retry-After içeren HTTP eylem yanıtını gösteren aynı örnek:

{
    "statusCode": 429,
    "headers": {
        "Retry-After": "300"
    }
}

Sayfalandırma desteği

Bazen, hedef hizmet sonuçları her seferinde bir sayfa döndürerek yanıt verir. Yanıt nextLink veya @odata.nextLink özelliğini kullanarak bir sonraki sayfayı belirtiyorsa, HTTP eylemindeki Sayfalandırma ayarını etkinleştirebilirsiniz. Bu ayar , HTTP eyleminin bu bağlantıları otomatik olarak izlemesine ve sonraki sayfayı almasına neden olur. Ancak, yanıt bir sonraki sayfayı başka bir etiketle belirtirse, iş akışınıza bir döngü eklemeniz gerekebilir. Bu döngüyü o etiketi takip eder şekilde yapın ve etiket geçersiz hale gelene kadar her sayfayı manüel olarak alın.

Konum üst bilgilerini denetlemeyi devre dışı bırakma

Bazı uç noktalar, hizmetler, sistemler veya API'ler, üst bilgisi olmayan bir 202 ACCEPTED yanıtı döndürüyor. HTTP eyleminin location başlığı mevcut olmadığında isteğin durumunu sürekli olarak kontrol etmesini önlemek için şu seçenekleriniz olabilir:

Bilinen sorunlar

Atlanmış HTTP üst bilgileri

Bir HTTP tetikleyicisi veya eylemi bu üst bilgileri içeriyorsa, Azure Logic Apps bu üst bilgileri herhangi bir uyarı veya hata göstermeden oluşturulan istek iletisinden kaldırır:

  • Accept-* aşağıdakiler dışında üst bilgiler Accept-version
  • Allow
  • Content-* POST ve PUT işlemlerini kullandığınızda kabul edilen Content-Disposition başlıkları hariç Content-Encoding ve Content-Type dışındaki tüm üst bilgiler. Ancak, Azure Logic Apps GET işlemini kullandığınızda bu üst bilgileri kaldırır.
  • Cookie üst bilgisi olsa da, Azure Logic Apps, Cookie özelliği kullanılarak belirtilen herhangi bir değeri kabul eder.
  • Expires
  • Host
  • Last-Modified
  • Origin
  • Set-Cookie
  • Transfer-Encoding

Azure Logic Apps, bu üst bilgilerle HTTP tetikleyicisi veya eylemi kullanan mantıksal uygulamaları kaydetmenizi engellemese de, Azure Logic Apps bu üst bilgileri yoksayar.

Yanıt içeriği beklenen içerik türüyle eşleşmiyor

HTTP eylemi üst bilgi application/json olarak ayarlanmış arka uç API'sini Content-Type çağırırsa, HTTP eylemi BadRequest hatası oluşturur, ancak arka uçtan gelen yanıt aslında JSON biçiminde içerik içermez ve bu da iç JSON biçimi doğrulamasında başarısız olur.