Aracılığıyla paylaş


Azure Logic Apps'te içerik türlerini işleme

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

Azure Logic Apps JSON, XML, düz dosyalar ve ikili veriler gibi tüm içerik türlerini destekler. Bazı içerik türleri yerel desteğe sahiptir, yani yayınlama veya dönüştürme ihtiyacı yoktur, ancak diğer içerik türleri gerekli biçimi sunmak için bazı teknik düzenlemeler veya biçim dönüşümü gerektirebilir.

Azure Logic Apps, iş akışlarındaki içeriği veya verileri işlemenin en iyi yolunu belirlemeye yardımcı olmak için, iş akışlarının dış arayanlardan gelen HTTP isteklerindeki üst bilgi değerini kullanır Content-Type .

Aşağıdaki liste, bir iş akışının karşılaşabileceği bazı örnek Content-Type değerleri içerir:

Bu kılavuz, Azure Logic Apps'in farklı içerik türlerini nasıl işlediğini açıklar ve gerektiğinde bu türlerin doğru şekilde nasıl yayınlanıp dönüştürüldüğünü gösterir.

application/json

Üst bilgi değerinin Content-Typeapplication/json olduğu bir HTTP isteği için Azure Logic Apps içeriği JavaScript Nesne Gösterimi (JSON) nesnesi olarak depolar ve işler. JSON içeriğini varsayılan olarak herhangi bir tür dönüştürme veya değişiklik olmadan ayrıştırabilirsiniz. Bu içeriği bir ifade kullanarak da ayrıştırabilirsiniz.

Örneğin, aşağıdaki ifade, iş akışında bir öncül eylemin JSON adı olan body() ile My_action işlevini kullanır:

body('My_action')['client']['animal-type'][0]

Aşağıdaki adımlarda, ifadenin tür değiştirme veya dönüştürme olmadan nasıl çalıştığı açıklanmaktadır.

  1. body() işlevi, eylemden bodyMy_action çıkış nesnesini alır.

  2. İşlev, döndürülen body nesnesinden client nesnesine erişir.

    client nesnesi, bir dizi olarak ayarlanmış animal-type özelliğini içerir.

  3. işlevi dizideki ilk öğeye erişir ve doğrudan atama veya dönüştürme olmadan köpek değerini döndürür.

Üst bilgi kullanmayan Content-Type JSON verileriyle çalışıyorsanız, json() işlevini kullanarak bu verileri el ile JSON'a dönüştürebilirsiniz, örneğin:

json(triggerBody())['client']['animal-type']

  1. İşlev, iş akışının tetikleyici çıktısından triggerBody() nesnesini body alır. Bu nesne genellikle bir JSON nesnesidir.

    Nesnenin body kaynağı, iş akışı tetikleyicisi tarafından alınan gelen HTTP isteğinden veya olayından kaynaklanır.

  2. İşlev, json() işlevden body döndürülen nesneyi JSON nesnesi olarak açıkça ayrıştırıyortriggerBody().

    Bu davranış, örneğin tetikleyici gövdesi JSON olarak işlenmesini gerektiren bir dize olduğunda yararlıdır.

Kalan ifade davranışı önceki örneğe benzer.

JSON özellikleri için belirteç oluşturma

Azure Logic Apps'te, JSON içeriğindeki özellikleri temsil eden kullanıcı dostu belirteçler oluşturabilirsiniz. Daha sonra bu belirteçleri kullanarak iş akışınızda bu özelliklere ve değerlerine daha kolay başvurabilirsiniz.

Aşağıdaki listede yaygın iş akışı işlemleri ve JSON içeriğindeki özellikler için belirteç oluşturmanın ilgili yolları açıklanmaktadır:

  • HTTP isteği alındığında adlı istek tetikleyicisi

    Tasarımcıda İstek tetikleyicisiyle çalışırken, isteğe bağlı olarak her özellik değeri için JSON nesnelerini, özelliklerini ve beklenen veri türlerini tanımlayan bir JSON şeması sağlayabilirsiniz. JSON şemanız yoksa, kullanabileceğiniz bir JSON şeması oluşturmak için örnek bir yük sağlayabilirsiniz.

    Tetikleyici, gelen HTTP isteklerinden JSON içeriğini ayrıştırmak ve JSON içeriğindeki özellikleri temsil eden belirteçler oluşturmak için şemayı kullanır. Daha sonra iş akışınızdaki sonraki eylemlerde bu özelliklere ve değerlerine kolayca başvurabilir ve kullanabilirsiniz.

    Aşağıdaki adımlarda bir JSON şeması oluşturmak için nasıl örnek bir yük sağlayabileceğiniz açıklanmaktadır:

    1. Tasarımcıda İstek tetikleyicisini seçerek bilgi bölmesini açın.

    2. Parametreler sekmesindeki İstek Gövdesi JSON Şeması kutusunun altında Şema oluşturmak için örnek yükü kullan'ı seçin.

    3. Örnek bir JSON yükü girin veya yapıştırın kutusuna örnek bir yük girin ve Bitti'yi seçin.

      Http isteği alındığında adlı İstek tetikleyicisinin yanı sıra örnek bir JSON yükünü gösteren ekran görüntüsü.

      Oluşturulan şema artık tetikleyicinizde görünür.

      Örnek JSON yükünden oluşturulan JSON şemasını gösteren ekran görüntüsü.

      Kod görünümü düzenleyicisinde İstek tetikleyicisi için temel alınan JSON tanımını gözden geçirebilirsiniz:

      "triggers": { 
         "When_an_HTTP_request_is_received": {
            "type": "Request",
            "kind": "Http",
            "inputs": { 
               "schema": {
                  "type": "object",
                  "properties": {
                     "client": {
                        "type": "object",
                        "properties": {
                           "animal-type": {
                              "type": "array",
                              "items": {
                                 "type": "string"
                              },
                           },
                           "name": {
                              "type": "string"
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      
    4. İş akışınızı tetikleyebilmek için , iş akışını ilk kez kaydettikten sonra oluşturulan İş Akışı URL'sini veya tetikleyicinin HTTP URL'sini alın.

    5. İş akışını test etmek için, iş akışı URL'sine veya tetikleyici URL'sine HTTP isteği gönderebileceğiniz bir istemci aracı veya uygulaması kullanın. İsteğin Content-Type adlı bir üst bilgi içerdiğinden ve üst bilgi değerinin application/json olarak ayarlandığından emin olun.

  • JSON ayrıştır eylemi

    Tasarımcıda bu eylemi kullandığınızda, JSON çıktısını ayrıştırabilir ve JSON içeriğinizdeki özellikleri temsil eden kullanıcı dostu belirteçler oluşturabilirsiniz. Daha sonra mantıksal uygulamanızın iş akışı boyunca bu özelliklere kolayca başvurabilir ve kullanabilirsiniz.

    İstek tetikleyicisine benzer şekilde, ayrıştırmak istediğiniz JSON içeriğini açıklayan bir JSON şeması sağlayabilir veya oluşturabilirsiniz. Bu şekilde Azure Service Bus, Azure Cosmos DB vb. verileri daha kolay kullanabilirsiniz.

    Bir örnekten oluşturulan şemayla JSON Ayrıştır eylemini gösteren ekran görüntüsü.

text/plain

İş akışınız üst bilgi değerinin Content-Typemetin/düz olduğu HTTP istekleri alıyorsa. Azure Logic Apps içeriği ham biçimde depolar ve işler. Sonraki iş akışı adımlarında bu içeriğe başvurmanız veya dönüştürme yapmadan kullanmanız durumunda, giden isteklerin Content-Type üst bilgi değeri text/plain olarak ayarlanmış olur.

Örneğin, düz bir dosyayla çalıştığınızı ve gelen HTTP isteğinin üst bilgi değerinin Content-Type olarak text/plainayarlandığını varsayalım:

Date,Name,Address
Oct-1,Frank,123 Ave

Bu isteği, başka bir istek göndermek için istek gövdesini kullanan sonraki bir eyleme gönderirseniz, ikinci isteğin Content-Type üst bilgi değeri text/plain olarak ayarlanır. Verilerle düz metin olarak çalışıyor ve üst bilgi belirtmediyseniz, örneğin, string() işlevini kullanarak bu verileri elle metne dönüştürebilirsiniz.

string(triggerBody())

application/xml ve application/octet-stream

Azure Logic Apps her zaman gelen bir HTTP isteği veya yanıtında Content-Type üst bilgi değerini korur. İş akışınız Content-Type öğesini application/octet-stream olarak ayarlanmış içerik alırsa ve bu içeriği dönüştürmeden sonraki bir eyleme eklerseniz, giden istek de Content-Type olarak ayarlanır application/octet-stream. Bu yaklaşım, iş akışında ilerlerken verilerin kaybolmamasını sağlar. Durum bilgisi olan iş akışlarında, sonraki eylemin durumu, girişleri ve çıkışları bir JSON nesnesinde depolanırken durum iş akışında ilerler.

Dönüştürücü işlevleri

Azure Logic Apps, bazı veri türlerini korumak için içeriği ikili base64 kodlu bir dizeye dönüştürür. Bu dize, hem yük olan $content hem de otomatik olarak dönüştürülen $content-type öğesini koruyan uygun meta verilere sahiptir.

Aşağıdaki listede, belirli işlevleri kullandığınızda Azure Logic Apps'in içeriği nasıl dönüştürdüğü açıklanmaktadır:

  • json(): Verileri application/json türüne dönüştürür.
  • xml(): Verileri application/xml türüne dönüştürür.
  • binary(): Verileri application/octet-stream türüne dönüştürür.
  • string(): Verileri text/plain türüne dönüştürür.
  • base64(): İçeriği base64 ile kodlanmış bir dizeye dönüştürür.
  • base64toString(): base64 ile kodlanmış bir dizeyi olarak text/plaindönüştürür.
  • base64toBinary(): base64 ile kodlanmış bir dizeyi olarak application/octet-streamdönüştürür.
  • dataUri(): Bir dizeyi veri URI'sine dönüştürür.
  • dataUriToBinary(): Veri URI'sini ikili dizeye dönüştürür.
  • dataUriToString(): Veri URI'sini dizeye dönüştürür.

Örneğin, iş akışı tetikleyicinizin içeriğin aşağıdaki örneğe Content-Type benzer şekilde ayarlandığı application/xml bir HTTP isteği aldığını varsayalım:

<?xml version="1.0" encoding="UTF-8" ?>
<CustomerName>Frank</CustomerName>

Bu içeriği aşağıdaki ifadeyi xml() ve triggerBody() işlevlerini kullanarak yayımlayabilirsiniz.

xml(triggerBody())

Daha sonra elde edilen içeriği iş akışında sonraki eylemlerle kullanabilirsiniz. Bunun yerine, xpath() ve xml() fonksiyonlarını kullanan aşağıdaki ifadeyi kullanabilirsiniz:

xpath(xml(triggerBody()), '/CustomerName')

Diğer içerik türleri

Azure Logic Apps diğer içerik türlerini destekler, ancak $content değişkenini kodunu çözerek bir HTTP isteğinden ileti gövdesini manuel olarak almanız gerekebilir.

Örneğin, iş akışınızın olarak ayarlandığı Content-Typeapplication/x-www-url-formencodedbir HTTP isteği aldığını varsayalım. Tüm verileri korumak için istek gövdesi yükün $content base64 dizesi olarak kodlandığı değişkeni içerir:

CustomerName=Frank&Address=123+Avenue

Bu içerik türü düz metin veya JSON biçiminde olmadığından Azure Logic Apps aşağıdaki CustomerName=Frank&Address=123+Avenue ve $content-type değişkenleri kullanarak depolar$content:

"body": {
   "$content-type": "application/x-www-url-formencoded",
   "$content": "AAB1241BACDFA=="
}

Azure Logic Apps, form verilerini işlemek için yerel işlevler de içerir, örneğin:

Ya da aşağıdaki örnek gibi bir ifade kullanarak verilere el ile erişebilirsiniz:

string(body('formdataAction'))

Giden bir isteği gerçekleştirmek için application/x-www-url-formencoded ifadesini Content-Type üst bilgi değeri olarak kullanın ve body('formdataAction') gibi bir ifade kullanarak herhangi bir atama yapmadan istek içeriğini eylem gövdesine ekleyin. Bu yöntem yalnızca eylem gövdesi inputs nesnesindeki body tek parametreyse çalışır. İfadeyi body('formdataAction') içerik türünün application/jsonolduğu bir istekte kullanırsanız, gövde kodlanmış olarak gönderildiğinden bir çalışma zamanı hatası alırsınız.