Share via


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

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

JSON, XML, düz dosyalar ve ikili veriler gibi çeşitli içerik türleri bir mantıksal uygulama üzerinden akabilir. Logic Apps tüm içerik türlerini desteklese de, bazıları yerel desteğe sahiptir ve mantıksal uygulamalarınızda tür değiştirme veya dönüştürme gerektirmez. Diğer türler gerektiğinde tür değiştirme veya dönüştürme gerektirebilir. Bu makalede Logic Apps'in içerik türlerini nasıl işlediği ve gerektiğinde bu türleri doğru şekilde nasıl oluşturabileceğiniz veya dönüştürebileceğiniz açıklanır.

logic apps Content-Type , içerik türlerini işlemek için uygun yolu belirlemek için HTTP çağrılarındaki üst bilgi değerini kullanır, örneğin:

uygulama/json

Logic Apps , application/json içerik türündeki tüm istekleri JavaScript Gösterimi (JSON) nesnesi olarak depolar ve işler. Varsayılan olarak, JSON içeriğini herhangi bir tür dönüştürme olmadan ayrıştırabilirsiniz. Üst bilgisi "application/json" içerik türüne sahip bir isteği ayrıştırmak için bir ifade kullanabilirsiniz. Bu örnek dizideki animal-type değeri dog dönüştürmeden döndürür:

@body('myAction')['animal-type'][0]

{
  "client": {
     "name": "Fido",
     "animal-type": [ "dog", "cat", "rabbit", "snake" ]
  }
}

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

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

JSON özellikleri için belirteç oluşturma

Logic Apps, mantıksal uygulamanızın iş akışında bu özelliklere daha kolay başvurabilmeniz ve kullanabilmeniz için JSON içeriğindeki özellikleri temsil eden kolay belirteçler oluşturmanızı sağlar.

  • İstek tetikleyicisi

    Bu tetikleyiciyi Logic App Tasarım Aracı kullandığınızda, almayı beklediğiniz yükü açıklayan bir JSON şeması sağlayabilirsiniz. Tasarımcı bu şemayı kullanarak JSON içeriğini ayrıştırıyor ve JSON içeriğinizdeki özellikleri temsil eden kullanıcı dostu belirteçler oluşturuyor. Daha sonra mantıksal uygulamanızın iş akışı boyunca bu özelliklere kolayca başvurabilir ve kullanabilirsiniz.

    Şemanız yoksa, şemayı oluşturabilirsiniz.

    1. İstek tetikleyicisinde Şema oluşturmak için örnek yükü kullan'ı seçin.

    2. Örnek bir JSON yükü girin veya yapıştırın altında örnek bir yük sağlayın ve Bitti'yi seçin. Örnek:

      Örnek JSON yüküyle

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

      Örnek JSON yükü sağlama

      Kod görünümü düzenleyicisinde İstek tetikleyicinizin temel tanımı aşağıdadır:

      "triggers": { 
         "manual": {
            "type": "Request",
            "kind": "Http",
            "inputs": { 
               "schema": {
                  "type": "object",
                  "properties": {
                     "client": {
                        "type": "object",
                        "properties": {
                           "animal-type": {
                              "type": "array",
                              "items": {
                                 "type": "string"
                              },
                           },
                           "name": {
                              "type": "string"
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      
    3. İstemci uygulamanızın Azure Logic Apps'e gönderdiği HTTP isteğinde Content-Type adlı bir üst bilgi eklediğinizden emin olun ve üst bilginin değerini application/json olarak ayarlayın.

  • JSON ayrıştır eylemi

    Mantıksal Uygulama Tasarım Aracı 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.

    JSON ayrıştırma

metin/düz

Mantıksal uygulamanız üst bilgisi olarak ayarlanmış text/plainHTTP iletileri Content-Type aldığında mantıksal uygulamanız bu iletileri ham biçimde depolar. Bu iletileri atama olmadan sonraki eylemlere eklerseniz, istekler üst bilgi olarak ayarlanmış şekilde Content-Typetext/plaindışarı gider.

Örneğin, düz bir dosyayla çalışırken üst bilgi içerik türü olarak text/plain ayarlanmış bir HTTP isteği Content-Type alabilirsiniz:

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

Daha sonra bu isteği sonraki bir eylemde başka bir isteğin gövdesi olarak gönderirseniz (örneğin, @body('flatfile')) bu ikinci isteğin de olarak ayarlanmış text/plainbir Content-Type üst bilgisi vardır. Düz metin olan ancak üst bilgi belirtmemiş verilerle çalışıyorsanız, bu ifade gibi string() işlevini kullanarak bu verileri el ile metne dönüştürebilirsiniz:

@string(triggerBody())

application/xml and application/octet-stream

Logic Apps, alınan HTTP isteğinde veya yanıtında her zaman öğesini Content-Type korur. Bu nedenle mantıksal uygulamanız olarak ayarlanmış application/octet-streamiçeriği Content-Type alırsa ve bu içeriği daha sonraki bir eyleme dönüştürmeden eklerseniz, giden istek de Content-Type olarak application/octet-streamayarlanır. Bu şekilde Logic Apps, iş akışında ilerlerken verilerin kaybolmayabileceğini garanti edebilir. Ancak, eylem durumu veya girişler ve çıkışlar, durum iş akışında ilerlerken bir JSON nesnesinde depolanır.

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

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

Bu listede, bu işlevleri kullandığınızda Logic Apps'in içeriği nasıl dönüştürdüğü açıklanır:

  • json(): Verileri application/json
  • xml(): Verileri application/xml
  • binary(): Verileri application/octet-stream
  • string(): Verileri text/plain
  • base64(): İçeriği base64 ile kodlanmış bir dizeye dönüştürür
  • base64toString(): Base64 ile kodlanmış bir dizeyi text/plain
  • base64toBinary(): Base64 ile kodlanmış bir dizeyi application/octet-stream
  • 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, şu içerik gibi olarak ayarlanmış application/xmlbir HTTP isteği Content-Type alırsanız:

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

ve işlevleriyle xml()triggerBody() ifadesini kullanarak @xml(triggerBody()) bu içeriği yayınlayabilir ve daha sonra bu içeriği kullanabilirsiniz. öte yandan @xpath(xml(triggerBody()), '/CustomerName') ve işlevleriyle xpath()xml() de ifadeyi kullanabilirsiniz.

Diğer içerik türleri

Logic Apps ile çalışır ve diğer içerik türlerini destekler, ancak değişkenin kodunu çözerek $content ileti gövdesini el ile almanızı gerektirebilir.

Örneğin, mantıksal uygulamanızın içerik türüne application/x-www-url-formencoded sahip bir istek tarafından tetikleneceğini varsayalım. Tüm verileri korumak için istek gövdesindeki değişkenin $content base64 dizesi olarak kodlanmış bir yükü vardır:

CustomerName=Frank&Address=123+Avenue

İstek düz metin veya JSON olmadığından, istek eylemde aşağıdaki gibi depolanır:

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

Logic Apps, form verilerini işlemek için yerel işlevler sağlar, örneğin:

Veya bu örnekte olduğu gibi bir ifade kullanarak verilere el ile erişebilirsiniz:

@string(body('formdataAction'))

Giden isteğin aynı application/x-www-url-formencoded içerik türü üst bilgisine sahip olmasını istiyorsanız, gibi @body('formdataAction')bir ifade kullanarak herhangi bir atama yapmadan isteği eylemin gövdesine ekleyebilirsiniz. Ancak, bu yöntem yalnızca gövde girişteki tek parametre body olduğunda çalışır. İfadeyi @body('formdataAction') bir application/json istekte kullanmayı denerseniz, gövde kodlanmış olarak gönderildiğinden bir çalışma zamanı hatası alırsınız.