Menangani jenis konten di Azure Logic Apps

Berlaku untuk: Azure Logic Apps (Konsumsi + Standar)

Azure Logic Apps mendukung semua jenis konten seperti JSON, XML, file datar, dan data biner. Meskipun beberapa jenis konten memiliki dukungan asli, yang berarti tidak memerlukan transmisi atau konversi, jenis konten lain memerlukan beberapa pekerjaan untuk memberi Anda format yang diperlukan.

Untuk membantu menentukan cara terbaik untuk menangani konten atau data dalam alur kerja, Azure Logic Apps menggunakan Content-Type nilai header dalam permintaan HTTP yang didapat alur kerja dari pemanggil eksternal.

Daftar berikut ini menyertakan beberapa contoh Content-Type nilai yang dapat ditemui alur kerja:

Panduan ini menjelaskan bagaimana Azure Logic Apps menangani berbagai jenis konten dan menunjukkan cara mentransmisikan atau mengonversi jenis ini dengan benar jika diperlukan.

application/json

Untuk permintaan HTTP di mana Content-Type nilai header adalah aplikasi/json, Azure Logic Apps menyimpan dan menangani konten sebagai objek JavaScript Object Notation (JSON). Secara default, Anda dapat mengurai konten JSON tanpa transmisi atau konversi apa pun. Anda juga dapat mengurai konten ini dengan menggunakan ekspresi.

Misalnya, ekspresi berikut menggunakan body() fungsi dengan My_action, yang merupakan nama JSON untuk tindakan pendahulu dalam alur kerja:

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

Langkah-langkah berikut menjelaskan cara kerja ekspresi tanpa transmisi atau konversi:

  1. Fungsi ini body() mendapatkan body objek output dari My_action tindakan.

  2. Dari objek yang dikembalikan body , fungsi mengakses client objek .

    Objek client berisi properti animal-type, yang diatur ke array.

  3. Fungsi mengakses item pertama dalam array dan mengembalikan nilai anjing secara langsung tanpa pengubahan tipe atau konversi.

Jika Anda bekerja dengan data JSON yang tidak menggunakan Content-Type header, Anda dapat mengonversi data tersebut secara manual ke JSON dengan menggunakan fungsi json(), misalnya:

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

  1. Fungsi triggerBody() mendapatkan objek body dari output pemicu alur kerja. Objek ini biasanya merupakan objek JSON.

    Sumber untuk body objek berasal dari permintaan HTTP masuk atau peristiwa yang diterima oleh pemicu alur kerja.

  2. Fungsi json() secara eksplisit mengurai objek yang dikembalikan dari fungsi body sebagai objek JSON.

    Perilaku ini berguna, misalnya, ketika isi pemicu adalah string yang memerlukan penanganan sebagai JSON.

Perilaku ekspresi yang tersisa mirip dengan contoh sebelumnya.

Membuat token untuk properti JSON

Di Azure Logic Apps, Anda dapat menghasilkan token yang mudah digunakan yang mewakili properti dalam konten JSON. Anda kemudian dapat menggunakan token ini sehingga Anda dapat dengan lebih mudah mereferensikan properti ini dan nilainya dalam alur kerja Anda.

Daftar berikut ini menjelaskan operasi alur kerja umum dan cara terkait yang dapat Anda hasilkan token untuk properti dalam konten JSON:

  • Pemicu permintaan bernama Saat permintaan HTTP diterima

    Saat Anda bekerja di perancang dengan pemicu Permintaan , Anda dapat secara opsional menyediakan skema JSON yang menentukan objek JSON, properti, dan jenis data yang diharapkan untuk setiap nilai properti. Jika Anda tidak memiliki skema JSON, Anda dapat memberikan contoh payload untuk menghasilkan skema JSON yang dapat Anda gunakan.

    Pemicu menggunakan skema untuk mengurai konten JSON dari permintaan HTTP masuk dan menghasilkan token yang mewakili properti dalam konten JSON. Anda kemudian dapat dengan mudah mereferensikan dan menggunakan properti ini dan nilainya dalam tindakan berikutnya dalam alur kerja Anda.

    Langkah-langkah berikut menjelaskan bagaimana Anda dapat memberikan contoh payload untuk menghasilkan skema JSON:

    1. Pada perancang, pilih pemicu Permintaan untuk membuka panel informasi.

    2. Pada tab Parameter , di bawah kotak Skema JSON Isi Permintaan , pilih Gunakan payload sampel untuk menghasilkan skema.

    3. Dalam kotak Masukkan atau tempel sampel payload JSON , masukkan payload sampel, lalu pilih Selesai.

      Cuplikan layar memperlihatkan pemicu Permintaan bernama Saat permintaan HTTP diterima ditambah contoh payload JSON.

      Skema yang dihasilkan sekarang muncul dalam pemicu Anda.

      Cuplikan layar memperlihatkan skema JSON yang dihasilkan dari contoh payload JSON.

      Di editor tampilan kode, Anda dapat meninjau definisi JSON yang mendasar untuk pemicu Permintaan :

      "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. Untuk memicu alur kerja Anda, dapatkan URL Alur Kerja atau URL HTTP pemicu, yang dihasilkan setelah Anda menyimpan alur kerja untuk pertama kalinya.

    5. Untuk menguji alur kerja, gunakan alat atau aplikasi klien tempat Anda dapat mengirim permintaan HTTP ke URL alur kerja atau URL pemicu. Pastikan permintaan menyertakan header bernama Content-Type dan nilai header diatur ke application/json.

  • Mengurai tindakan JSON

    Saat Anda menggunakan tindakan ini di perancang, Anda dapat mengurai output JSON dan menghasilkan token yang mudah digunakan yang mewakili properti dalam konten JSON Anda. Kemudian, Anda dapat dengan mudah mereferensikan dan menggunakan properti tersebut di seluruh alur kerja aplikasi logika Anda.

    Mirip dengan Pemicu permintaan, Anda dapat menyediakan atau menghasilkan skema JSON yang menjelaskan konten JSON yang ingin Anda uraikan. Dengan demikian, Anda dapat lebih mudah mengonsumsi data dari Azure Service Bus, Azure Cosmos DB, dan sebagainya.

    Cuplikan layar memperlihatkan tindakan Uraikan JSON dengan skema yang dihasilkan dari sampel.

text/plain

Jika alur kerja Anda menerima permintaan HTTP di mana Content-Type nilai header adalah text/plain. Azure Logic Apps menyimpan dan menangani konten dalam bentuk mentah. Jika Anda mereferensikan atau menggunakan konten ini dalam tindakan alur kerja berikutnya tanpa casting atau konversi, permintaan keluar juga memiliki nilai header yang disetel ke Content-Type.

Misalnya, Anda bekerja dengan file datar, dan permintaan HTTP masuk memiliki nilai header Content-Type diatur ke text/plain.

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

Jika Anda mengirim permintaan ini ke tindakan berikutnya yang menggunakan isi permintaan untuk mengirim permintaan lain, permintaan kedua juga memiliki Content-Type nilai header yang diatur ke text/plain. Jika Anda bekerja dengan data dalam teks biasa tetapi tidak menentukan header, Anda dapat secara manual mentransmisikan data ini ke teks dengan menggunakan string() fungsi , misalnya:

string(triggerBody())

application/xml dan application/octet-stream

Azure Logic Apps selalu mempertahankan Content-Type nilai header dalam permintaan atau respons HTTP masuk. Jika alur kerja Anda menerima konten dengan Content-Type diatur ke aplikasi/oktet-stream, dan Anda menyertakan konten tersebut dalam tindakan berikutnya tanpa transmisi, permintaan keluar juga diatur Content-Type ke application/octet-stream. Pendekatan ini memastikan bahwa data tidak tersesat saat bergerak melalui alur kerja. Dalam proses kerja dengan status tetap, keadaan, masukan, dan keluaran tindakan berikutnya disimpan dalam objek JSON saat kondisi bergerak melalui alur kerja.

Fungsi pengonversi

Untuk mempertahankan beberapa jenis data, Azure Logic Apps mengonversi konten menjadi string biner yang dikodekan base64. String ini memiliki metadata yang sesuai yang mempertahankan $content payload dan $content-type, yang secara otomatis dikonversi.

Daftar berikut ini menjelaskan cara Azure Logic Apps mengonversi konten saat Anda menggunakan fungsi tertentu:

  • json(): Melemparkan data ke application/json.
  • xml(): Melemparkan data ke application/xml.
  • binary(): Melemparkan data ke application/octet-stream.
  • string(): Melemparkan data ke text/plain.
  • base64(): Mengonversi konten menjadi string yang dikodekan base64.
  • base64toString(): Mengonversi string yang dikodekan base64 menjadi text/plain.
  • base64toBinary(): Mengonversi string yang dikodekan base64 menjadi application/octet-stream.
  • dataUri(): Mengonversi string ke URI data.
  • dataUriToBinary(): Mengonversi URI data menjadi string biner.
  • dataUriToString(): Mengonversi URI data menjadi string.

Misalnya, pemicu alur kerja Anda menerima permintaan HTTP di mana Content-Type diatur ke application/xml tempat konten terlihat seperti sampel berikut:

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

Anda dapat mentransmisikan konten ini dengan menggunakan ekspresi berikut, yang menggunakan xml() fungsi dan triggerBody() :

xml(triggerBody())

Anda kemudian dapat menggunakan konten yang dihasilkan dengan tindakan berikutnya dalam alur kerja. Atau, Anda mungkin menggunakan ekspresi berikut yang menggunakan fungsi xpath() dan xml() sebagai gantinya.

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

Jenis konten lainnya

Azure Logic Apps mendukung jenis konten lain tetapi mungkin mengharuskan Anda mendapatkan isi pesan secara manual dari permintaan HTTP dengan mendekode $content variabel.

Misalnya, alur kerja Anda menerima permintaan HTTP di mana Content-Type diatur ke application/x-www-url-formencoded. Untuk mempertahankan semua data, isi permintaan menyertakan $content variabel tempat payload dikodekan sebagai string base64:

CustomerName=Frank&Address=123+Avenue

Tipe konten ini tidak dalam format teks biasa atau JSON, karena itu Azure Logic Apps menyimpan CustomerName=Frank&Address=123+Avenue menggunakan variabel $content-type dan $content berikut:

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

Azure Logic Apps juga menyertakan fungsi asli untuk menangani data formulir, misalnya:

Atau, Anda dapat mengakses data secara manual dengan menggunakan ekspresi seperti contoh berikut:

string(body('formdataAction'))

Untuk membuat permintaan keluar, gunakan application/x-www-url-formencoded sebagai nilai header Content-Type, tambahkan konten permintaan ke isi tindakan tanpa pengecualian dengan menggunakan ekspresi seperti body('formdataAction'). Metode ini hanya berfungsi jika isi tindakan adalah satu-satunya parameter dalam body objek input. Jika Anda menggunakan ekspresi body('formdataAction') dalam permintaan di mana tipe konten adalah application/json, Anda akan mengalami kesalahan saat runtime karena isi pesan dikirim dalam bentuk terenkripsi.