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.

Not

Bunun yerine gelen HTTPS çağrılarını alıp 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 ve yerleşik İstek tetikleyicisi ve Yanıt eylemi.

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ı denetlemek veya yoklamak için HTTP tetikleyicisini iş akışınızın ilk adımı olarak 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 bir yerden uç noktayı çağırmak için HTTP eylemini ekleyin. Uç noktanın yanıtı, iş akışınızın kalan eylemlerinin nasıl çalıştığını belirler.

Önkoşullar

  • Bir Azure hesabı ve aboneliği Azure aboneliğiniz yoksa ücretsiz bir Azure hesabı için kaydolun.

  • Çağırmak istediğiniz hedef uç noktanın URL'si

  • Hedef uç noktayı çağırmak istediğiniz mantıksal uygulama iş akışı. HTTP tetikleyicisiyle başlamak için boş bir iş akışı gerekir. HTTP eylemini kullanmak için iş akışınızı istediğiniz tetikleyiciyle başlatın. Bu örnekte, ilk adım olarak HTTP tetikleyicisi kullanılır.

Bağlan veya teknik başvuru

Tetikleyici ve eylem parametreleri hakkında teknik bilgi için 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ı ve boş iş akışınızı tasarımcıda açın.

  2. İş akışınıza HTTP adlı yerleşik tetikleyiciyi eklemek için bu genel adımları izleyin.

    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.

  3. 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.

    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 konulara bakın:

  4. Diğer kullanılabilir parametreleri eklemek için Gelişmiş parametreler listesini açın ve istediğiniz parametreleri seçin.

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

  6. Tamamladığınızda, 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 http çağrısı yapar ve bir yanıt döndürür.

  1. Azure portalında Tüketim mantığı uygulamanızı ve iş akışınızı tasarımcıda açın.

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

  2. İş akışınıza HTTP adlı yerleşik eylemi eklemek için bu genel adımları izleyin.

    Bu örnek, eylemi HTTP eylemi olarak yeniden adlandırır - Adımın 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.

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

    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 şu konulara bakın:

  4. Diğer kullanılabilir parametreleri eklemek için Gelişmiş parametreler listesini açın ve istediğiniz parametreleri seçin.

  5. Tamamladığınızda, iş akışınızı kaydedin. Tasarımcı araç çubuğunda Kaydet'i seçin.

Tetikleyici ve eylem çıkışları

Aşağıda, aşağıdaki bilgileri döndüren bir HTTP tetikleyicisinden veya eyleminden elde edilen çıkışlar hakkında daha fazla bilgi bulabilirsiniz:

Özellik 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 Tamsayı İstekten gelen durum kodu
Durum kodu Açıklama
200 Tamam
202 Kabul edildi
400 Hatalı istek
Kategori 401 Yetkisiz
403 Yasak
404 Bulunamadı
500 İç sunucu hatası. Bilinmeyen bir hata oluştu.

Giden aramalar için URL güvenliği

Daha önce Güvenli Yuva Katmanı (SSL), otomatik olarak imzalanan sertifikalar veya Microsoft Entra ID Açık Kimlik Doğrulaması (Microsoft Entra ID OAuth) olarak bilinen Aktarım Katmanı Güvenliği (TLS) gibi iş akışınızdan gelen giden çağrılar için şifreleme, güvenlik ve yetkilendirme hakkında bilgi için bkz. Güvenli erişim ve veri - 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/SSL sertifikası: Uygulama ayarını WEBSITE_LOAD_ROOT_CERTIFICATESekleyin ve değerini TLS/SSL sertifikanızın parmak izi olarak ayarlayın.

  • "Sertifika" kimlik bilgisi türüne sahip istemci sertifikası veya Microsoft Entra Id Open Authentication (Microsoft Entra ID OAuth): Uygulama ayarını WEBSITE_LOAD_USER_PROFILEekleyin ve değerini olarak 1ayarlayın.

TLS/SSL sertifika kimlik doğrulaması

  1. Mantıksal uygulama kaynağınızın uygulama ayarlarında uygulama ayarınıWEBSITE_LOAD_ROOT_CERTIFICATES ekleyin veya güncelleştirin.

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

    "WEBSITE_LOAD_ROOT_CERTIFICATES": "<thumbprint-for-TLS/SSL-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ı ekleyin veya güncelleştirin WEBSITE_LOAD_ROOT_CERTIFICATES :

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

    Not

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

    1. Mantıksal uygulama kaynak menünüzün Ayarlar altında TLS/SSL ayarları>Özel Anahtar Sertifikaları (.pfx) veya Ortak Anahtar Sertifikaları (.cer) seçeneğini belirleyin.

    2. Kullanmak istediğiniz sertifikayı bulun ve parmak izini kopyalayın.

    Daha fazla bilgi için Parmak izini bulma - Azure Uygulaması Hizmeti'ni gözden geçirin.

Daha fazla bilgi için aşağıdaki belgeleri gözden geçirin:

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

  1. Mantıksal uygulama kaynağınızın uygulama ayarlarında uygulama ayarınıWEBSITE_LOAD_USER_PROFILE ekleyin veya güncelleştirin.

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

    "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ı ekleyin veya güncelleştirin WEBSITE_LOAD_USER_PROFILE :

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

Daha fazla bilgi için aşağıdaki belgeleri gözden geçirin:

Ç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övdesine $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, bu sitenin türünü destekleyen API'sini kullanarak bir Web sitesine Excel dosyası için HTTP POST isteği gönderen bir iş akışınız multipart/form-data olduğunu varsayalım. Aşağıdaki örnek, bu eylemin nasıl görünebileceğini gösterir:

Standart iş akışı

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

Tüketim iş akışı

HTTP eylemi ve çok parçalı form verileriyle Tüketim 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ği için gövdede form urlencoded verileri sağlamak için, verilerin içerik türüne application/x-www-form-urlencoded sahip olduğunu belirtmeniz gerekir. HTTP tetikleyicisine veya eylemine content-type üst bilgiyi ekleyin. Üst bilgi değerini olarak application/x-www-form-urlencodedayarlayı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:

Standart iş akışı

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

Tüketim iş akışı

HTTP isteği ve içerik türü üst bilgisinin application/x-www-form-urlencoded olarak ayarlandığı Tüketim 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, HTTP eylemi bir uç nokta, hizmet, sistem veya API'ye istek çağırdıktan veya gönderdikten sonra alıcının hemen bir "202 KABUL EDİLEN" yanıtı döndürdüğünü belirtir. Bu kod, alıcının isteği kabul ettiğini ancak işlemeyi tamamlamadığını onaylar. Yanıt, alıcı işlemi durdurup "200 Tamam" başarı yanıtı veya 202 dışı başka bir yanıt döndürene kadar çağıranın zaman uyumsuz isteği yoklamak veya denetlemek için kullanabileceği URI'yi ve yenileme kimliğini belirten bir üst bilgi içerebilirlocation. Ancak, çağıranın isteğin işlenmesini beklemesi gerekmez ve sonraki eylemi çalıştırmaya devam edebilir. Daha fazla bilgi için bkz . Zaman uyumsuz mikro hizmet tümleştirmesi mikro hizmet özerkliğini zorlar.

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, "202 ACCEPTED" yanıtını olduğu gibi döndürür ve iş akışı yürütmesindeki 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 javascript nesne gösterimi (JSON) tanımı, zaman uyumsuz işlem desenini örtük olarak izler.

  • HTTP eyleminin tetikleyicisi değil, varsayılan olarak etkin olan Zaman Uyumsuz Desen ayarı vardır. 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.

    Zaman Uyumsuz Desen ayarını bulmak için, Standart veya Tüketim iş akışınız olup olmadığına bağlı olarak şu adımları izleyin:

    Standart iş akışı*

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

    2. Ağ altında Zaman Uyumsuz Desen ayarını bulun.

    Tüketim iş akışı

    1. İş akışı tasarımcısında, HTTP eyleminin başlık çubuğunda, eylemin ayarlarını açan üç nokta (...) düğmesini seçin.

    2. Zaman Uyumsuz 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'i seçin.

  2. Ağ altında Zaman Uyumsuz 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:

Yeniden Deneme-Sonra ü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. Üst Retry-After bilgi durum koduyla 202 - Accepted da çalışır.

aşağıda, içeren HTTP eylem yanıtını gösteren örnek verilmiştir Retry-After:

{
    "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ğiyle sonraki sayfayı belirtiyorsa, HTTP eyleminde Sayfalandırma ayarını açabilirsiniz. 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ünün bu etiketi izlemesini sağlayın ve etiket null olana kadar her sayfayı el ile alın.

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

Bazı uç noktalar, hizmetler, sistemler veya API'ler üst bilgisi olmayan bir 202 ACCEPTED location yanıt döndürür. HTTP eyleminin üst bilgi olmadığında istek durumunu location sürekli olarak denetlemesini önlemek için şu seçeneklere sahip olabilirsiniz:

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-Encodingve Content-Typedışındaki Content-Dispositionüst bilgiler. Ancak, GET işlemini kullandığınızda Azure Logic Apps bu üst bilgileri bırakır.
  • Cookieüst bilgi, ancak Azure Logic Apps Cookie özelliğini kullanarak belirttiğiniz tüm değerleri 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.

Sonraki adımlar