Bagikan melalui


Membuat alur kerja yang dapat Anda panggil, picu, atau sarangkan menggunakan titik akhir HTTPS di Azure Logic Apps

Berlaku untuk: Azure Logic Apps (Konsumsi + Standar)

Beberapa skenario mungkin mengharuskan Anda membuat alur kerja aplikasi logika yang dapat menerima permintaan masuk dari layanan atau alur kerja lain, atau alur kerja yang dapat Anda panggil dengan menggunakan URL. Untuk tugas ini, Anda dapat mengekspos titik akhir HTTPS sinkron asli pada alur kerja Saat Anda menggunakan salah satu jenis pemicu berbasis permintaan berikut:

Panduan ini memperlihatkan cara membuat titik akhir yang dapat dipanggil untuk alur kerja Anda dengan menambahkan pemicu Permintaan lalu memanggil titik akhir tersebut dari alur kerja lain. Semua prinsip secara identik berlaku untuk jenis pemicu berbasis permintaan lainnya yang dapat menerima permintaan masuk.

Prasyarat

  • Akun dan langganan Azure. Jika Anda tidak memiliki langganan, daftar untuk mendapatkan akun Azure secara gratis.

  • Alur kerja aplikasi logika tempat Anda ingin menggunakan pemicu berbasis permintaan untuk membuat titik akhir yang dapat dipanggil. Anda dapat memulai dengan alur kerja kosong atau alur kerja yang sudah ada di mana Anda dapat mengganti pemicu saat ini. Contoh ini dimulai dengan alur kerja kosong.

  • Untuk menguji URL untuk titik akhir yang dapat dipanggil yang Anda buat, Anda memerlukan alat atau aplikasi seperti Postman.

Membuat titik akhir yang dapat dipanggil

Berdasarkan apakah Anda memiliki alur kerja aplikasi logika Standar atau Konsumsi, ikuti langkah-langkah yang sesuai:

  1. Di portal Azure, buka sumber daya aplikasi logika Standar dan alur kerja kosong di perancang.

  2. Ikuti langkah-langkah umum ini untuk menambahkan pemicu Permintaan bernama Saat permintaan HTTP diterima.

  3. Secara opsional, dalam kotak Request Body JSON Schema, Anda dapat memasukkan skema JSON yang menjelaskan payload atau data yang Anda harapkan diterima oleh pemicu.

    Desainer menggunakan skema ini untuk menghasilkan token yang merepresentasikan output pemicu. Anda kemudian dapat dengan mudah mereferensikan output ini di seluruh alur kerja aplikasi logika Anda. Pelajari lebih lanjut tentang token yang dihasilkan dari skema JSON.

    Untuk contoh ini, masukkan skema berikut:

    {
       "type": "object",
       "properties": {
          "address": {
             "type": "object",
             "properties": {
                "streetNumber": {
                   "type": "string"
                },
                "streetName": {
                   "type": "string"
                },
                "town": {
                   "type": "string"
                },
                "postalCode": {
                   "type": "string"
                }
             }
          }
       }
    }
    

    Screenshot shows Standard workflow with Request trigger and Request Body JSON Schema parameter with example schema.

    Atau, Anda dapat menghasilkan skema JSON dengan menyediakan sampel payload:

    1. Di pemicu Permintaan, pilih Gunakan sampel payload untuk menghasilkan skema.

    2. Dalam kotak Masukkan atau tempel sampel payload JSON, masukkan sampel payload Anda, misalnya:

      {
         "address": {
            "streetNumber": "00000",
            "streetName": "AnyStreet",
            "town": "AnyTown",
            "postalCode": "11111-1111"
        }
      }
      
    3. Jika Anda sudah siap, pilih Selesai.

      Kotak Request Body JSON Schema sekarang menunjukkan skema yang dihasilkan.

  4. Simpan alur kerja Anda.

    Kotak URL HTTP POST sekarang menampilkan URL panggilan balik yang dihasilkan yang dapat digunakan layanan lain untuk memanggil dan memicu alur kerja aplikasi logika Anda. URL ini menyertakan parameter kueri yang menentukan kunci Tanda Tangan Akses Bersama (SAS), yang digunakan untuk autentikasi.

    Screenshot shows Standard workflow, Request trigger, and generated callback URL for endpoint.

  5. Untuk menyalin URL panggilan balik, Anda memiliki opsi berikut:

    • Di sebelah kanan kotak URL HTTP POST, pilih Salin URL (ikon salin file).

    • Salin URL panggilan balik dari halaman Gambaran Umum alur kerja Anda.

      1. Pada menu alur kerja Anda, pilih Gambaran Umum.

      2. Pada halaman Gambaran Umum , di bawah URL Alur Kerja, pindahkan penunjuk Anda ke URL, dan pilih Salin ke clipboard:

        Screenshot shows Standard workflow and Overview page with workflow URL.

  6. Untuk menguji URL panggilan balik yang sekarang Anda miliki untuk pemicu Permintaan, gunakan alat atau aplikasi seperti Postman, dan kirim permintaan menggunakan metode yang diharapkan pemicu Permintaan.

    Contoh ini menggunakan metode POST:

    POST https://{logic-app-name}.azurewebsites.net:443/api/{workflow-name}/triggers/{trigger-name}/invoke?api-version=2022-05-01&sp=%2Ftriggers%2F{trigger-name}%2Frun&sv=1.0&sig={shared-access-signature}

Pilih metode permintaan yang diharapkan

Secara default, pemicu Permintaan mengharapkan permintaan POST. Namun, Anda dapat menentukan metode berbeda yang harus digunakan pemanggil, tetapi hanya satu metode.

  1. Di pemicu Permintaan, buka daftar Parameter tingkat lanjut, dan pilih Metode, yang menambahkan properti ini ke pemicu.

  2. Dari daftar Metode, pilih metode yang seharusnya diharapkan oleh pemicu. Atau, Anda dapat menentukan metode kustom.

    Misalnya, pilih metode GET sehingga Anda dapat menguji URL titik akhir Anda nanti.

Meneruskan parameter melalui URL titik akhir

Saat Anda ingin menerima nilai parameter melalui URL titik akhir, Anda memiliki opsi ini:

  • Terima nilai melalui parameter GET atau parameter URL.

    Nilai-nilai ini diteruskan sebagai pasangan nilai nama di URL titik akhir. Untuk opsi ini, Anda perlu menggunakan metode GET di pemicu Permintaan Anda. Dalam tindakan berikutnya, Anda bisa mendapatkan nilai parameter sebagai output pemicu dengan menggunakan fungsi triggerOutputs() dalam ekspresi.

  • Menerima nilai melalui jalur relatif untuk parameter di pemicu Permintaan Anda.

    Nilai-nilai ini dilewatkan melalui jalur relatif di URL titik akhir. Anda juga perlu secara eksplisit memilih metode yang diharapkan oleh pemicu. Dalam tindakan berikutnya, Anda bisa mendapatkan nilai parameter sebagai output pemicu dengan mereferensikan output tersebut secara langsung.

Menerima nilai melalui parameter GET

  1. Di pemicu Permintaan, buka parameter Tingkat Lanjut, tambahkan properti Metode ke pemicu, dan pilih metode GET .

    Untuk informasi selengkapnya, lihat Memilih metode permintaan yang diharapkan.

  2. Di perancang, ikuti langkah-langkah umum ini untuk menambahkan tindakan tempat Anda ingin menggunakan nilai parameter.

    Untuk contoh ini, pilih tindakan bernama Respons.

  3. Untuk menyusun ekspresi triggerOutputs() yang mengambil nilai parameter, ikuti langkah-langkah berikut:

    1. Di tindakan Respons, pilih di dalam properti Isi sehingga opsi untuk konten dinamis (ikon kilat) dan editor ekspresi (ikon rumus) muncul. Pilih ikon rumus untuk membuka editor ekspresi.

    2. Dalam kotak ekspresi, masukkan ekspresi berikut, ganti parameter-name dengan nama parameter Anda, dan pilih OK.

      triggerOutputs()['queries']['parameter-name']

      Screenshot shows Standard workflow, Response action, and the triggerOutputs() expression.

      Dalam properti Isi, ekspresi muncul ke token triggerOutputs().

      Screenshot shows Standard workflow with Response action's resolved triggerOutputs() expression.

      Jika Anda menyimpan alur kerja, navigasikan jauh dari perancang, dan kembali ke perancang, token menunjukkan nama parameter yang Anda tentukan, misalnya:

      Screenshot shows Standard workflow with Response action's resolved expression for parameter name.

      Dalam tampilan kode properti Isi muncul dalam definisi tindakan Respons sebagai berikut:

      "body": "@{triggerOutputs()['queries']['parameter-name']}",

      Misalnya, Anda ingin meneruskan nilai untuk parameter bernama postalCode. Properti Isi menentukan string, Postal Code: dengan spasi tambahan, diikuti dengan ekspresi yang sesuai:

      Screenshot shows Standard workflow with Response action and example triggerOutputs() expression.

Menguji titik akhir yang dapat dipanggil

  1. Dari pemicu Permintaan, salin URL alur kerja, dan tempelkan URL ke jendela browser lain. Di URL, tambahkan nama parameter dan nilai ke URL dalam format berikut, dan tekan Enter.

    ...invoke/{parameter-name}/{parameter-value}?api-version=2022-05-01...

    Misalnya:

    https://mystandardlogicapp.azurewebsites.net/api/Stateful-Workflow/triggers/When_a_HTTP_request_is_received/invoke/address/12345?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig={shared-access-signature}

    Browser mengembalikan respons dengan teks ini: Postal Code: 123456

    Screenshot shows browser with Standard workflow response from request to callback URL.

Catatan

Jika Anda ingin menyertakan simbol pagar atau pound (#) dalam URI, gunakan versi yang dikodekan ini sebagai gantinya: %25%23

Menerima nilai melalui jalur relatif

  1. Di pemicu Permintaan, buka daftar Parameter tingkat lanjut, dan pilih Jalur relatif, yang menambahkan properti ini ke pemicu.

    Screenshot shows Standard workflow, Request trigger, and added property named Relative path.

  2. Di properti Jalur relatif, tentukan jalur relatif untuk parameter dalam skema JSON yang Anda inginkan diterima URL, misalnya, /address/{postalCode}.

    Screenshot shows Standard workflow, Request trigger, and Relative path parameter value.

  3. Di bawah pemicu Permintaan, ikuti langkah-langkah umum ini untuk menambahkan tindakan tempat Anda ingin menggunakan nilai parameter.

    Untuk contoh ini, tambahkan tindakan Respons.

  4. Dalam properti Isi tindakan Respons, sertakan token yang merepresentasikan parameter yang Anda tentukan di jalur relatif pemicu Anda.

    Misalnya, Anda ingin tindakan Respons menghasilak Postal Code: {postalCode}.

    1. Di properti Isi, masukkan Postal Code: dengan spasi tambahan. Letakkan kursor Anda di dalam kotak edit sehingga daftar konten dinamis tetap terbuka.

    2. Dalam daftar konten dinamis, dari bagian Saat permintaan HTTP diterima , pilih output pemicu Parameter Jalur postalCode .

      Screenshot shows Standard workflow, Response action, and specified trigger output to include in response body.

      Properti Isi sekarang menyertakan parameter yang dipilih:

      Screenshot shows Standard workflow and example response body with parameter.

  5. Simpan alur kerja Anda.

    Di pemicu Permintaan, URL panggilan balik diperbarui dan sekarang menyertakan jalur relatif, misalnya:

    https://mystandardlogicapp.azurewebsites.net/api/Stateful-Workflow/triggers/When_a_HTTP_request_is_received/invoke/address/%7BpostalCode%7D?api-version=2022-05-01&sp=%2Ftriggers%2FWhen_a_HTTP_request_is_received%2Frun&sv=1.0&sig={shared-access-signature}

  6. Untuk menguji titik akhir yang dapat dipanggil, salin URL panggilan balik yang diperbarui dari pemicu Permintaan, tempelkan URL ke jendela browser lain, ganti %7BpostalCode%7D di URL dengan 123456, dan tekan Enter.

    Browser mengembalikan respons dengan teks ini: Postal Code: 123456

    Screenshot shows browser with Standard workflow response from request to callback URL.

Catatan

Jika Anda ingin menyertakan simbol pagar atau pound (#) dalam URI, gunakan versi yang dikodekan ini sebagai gantinya: %25%23

Memanggil alur kerja melalui URL titik akhir

Setelah membuat titik akhir, Anda dapat memicu alur kerja dengan mengirim permintaan HTTPS ke URL lengkap titik akhir. Alur kerja Azure Logic Apps memiliki dukungan bawaan untuk titik akhir akses langsung.

Token yang dihasilkan dari skema

Saat Anda memberikan skema JSON di pemicu Permintaan, perancang alur kerja menghasilkan token untuk properti dalam skema tersebut. Anda kemudian dapat menggunakan token tersebut untuk meneruskan data melalui alur kerja Anda.

Misalnya, jika Anda menambahkan lebih banyak properti, seperti "suite", ke skema JSON Anda, token untuk properti tersebut tersedia untuk Anda gunakan di langkah-langkah selanjutnya untuk alur kerja Anda. Berikut adalah skema JSON lengkap:

{
   "type": "object",
   "properties": {
      "address": {
         "type": "object",
         "properties": {
            "streetNumber": {
               "type": "string"
            },
            "streetName": {
               "type": "string"
            },
            "suite": {
               "type": "string"
            },
            "town": {
               "type": "string"
            },
            "postalCode": {
               "type": "string"
            }
         }
      }
   }
}

Memanggil alur kerja lain

Anda dapat memanggil alur kerja lain yang dapat menerima permintaan dengan menumpuknya di dalam alur kerja saat ini. Untuk memanggil alur kerja ini, ikuti langkah-langkah berikut:

  1. Di perancang, ikuti langkah-langkah umum ini untuk menambahkan tindakan Operasi Alur Kerja bernama Panggil alur kerja di aplikasi alur kerja ini.

    Daftar Nama Alur Kerja memperlihatkan alur kerja yang memenuhi syarat untuk Anda pilih.

  2. Dari daftar Nama Alur Kerja, pilih alur kerja yang ingin Anda panggil, misalnya:

    Screenshot shows Standard workflow, action named Invoke a workflow in this workflow app, opened Workflow Name list, and available workflows to call.

Mereferensikan konten dari permintaan masuk

Jika tipe konten permintaan masuk adalah application/json, Anda dapat mereferensikan properti dalam permintaan masuk. Jika tidak, konten ini diperlakukan sebagai unit biner tunggal yang dapat Anda berikan ke API lain. Untuk mereferensikan konten ini di dalam alur kerja aplikasi logika Anda, Anda harus mengonversi konten tersebut terlebih dahulu.

Misalnya, jika Anda meneruskan konten yang memiliki jenis application/xml, Anda bisa menggunakan @xpath() ekspresi untuk melakukan ekstraksi JalurX, atau menggunakan @json() ekspresi untuk mengonversi XML ke JSON. Pelajari selengkapnya tentang bekerja dengan jenis konten yang didukung.

Untuk mendapatkan output dari permintaan masuk, Anda dapat menggunakan @triggerOutputs ekspresi. Misalnya, Anda memiliki output yang terlihat seperti contoh ini:

{
   "headers": {
      "content-type" : "application/json"
   },
   "body": {
      "myProperty" : "property value"
   }
}

Untuk mengakses properti body secara khusus, Anda dapat menggunakan @triggerBody() ekspresi sebagai pintasan.

Merespons permintaan

Terkadang Anda ingin menanggapi permintaan tertentu yang memicu alur kerja Anda dengan mengembalikan konten ke pemanggil. Untuk membuat kode status, header, dan isi untuk respons Anda, gunakan tindakan Respons. Tindakan ini dapat muncul di mana saja di alur kerja Anda, bukan hanya di akhir alur kerja Anda. Jika alur kerja Anda tidak menyertakan tindakan Respons, titik akhir akan segera merespons dengan status Diterima 202.

Agar pemanggil asli berhasil mendapatkan respons, semua langkah yang diperlukan untuk respons harus diselesaikan dalam batas waktu habis permintaan kecuali alur kerja yang dipicu disebut sebagai alur kerja berlapis. Jika tidak ada respons yang dikembalikan dalam batas ini, permintaan masuk habis dan menerima respons waktu habis klien 408.

Untuk alur kerja berlapis, alur kerja induk terus menunggu respons hingga semua langkah selesai, terlepas dari berapa banyak waktu yang diperlukan.

Membangun respons

Dalam isi respons, Anda dapat menyertakan beberapa header dan tipe konten apa pun. Misalnya, header respons berikut menentukan bahwa jenis konten respons adalah application/json dan isi berisi nilai untuk town properti dan postalCode , berdasarkan skema JSON yang dijelaskan sebelumnya dalam topik ini untuk pemicu Permintaan.

Screenshot shows Response action and response content type.

Respons memiliki properti ini:

Properti (Tampilan) Properti (JSON) Deskripsi
Kode status statusCode Kode status HTTPS yang akan digunakan dalam respons untuk permintaan masuk. Kode ini bisa menggunakan kode status valid yang dimulai dengan 2xx, 4xx, atau 5xx. Namun, kode status 3xx tidak diizinkan.
Header headers Satu atau beberapa header untuk disertakan dalam respons
Isi body Objek isi yang dapat menjadi string, objek JSON, atau bahkan konten biner yang direferensikan dari langkah sebelumnya

Untuk melihat definisi JSON untuk tindakan Respons dan definisi JSON lengkap alur kerja Anda, ubah dari tampilan perancang menjadi tampilan kode.

"Response": {
   "type": "Response",
   "kind": "http",
   "inputs": {
      "body": {
         "postalCode": "@triggerBody()?['address']?['postalCode']",
         "town": "@triggerBody()?['address']?['town']"
      },
      "headers": {
         "content-type": "application/json"
      },
      "statusCode": 200
   },
   "runAfter": {}
}

T & J

T: Bagaimana dengan keamanan URL untuk panggilan masuk?

J: Azure dengan aman menghasilkan URL panggilan balik aplikasi logika dengan menggunakan Tanda Tangan Akses Bersama (SAS). Tanda tangan ini melewati sebagai parameter kueri dan harus divalidasi sebelum alur kerja Anda dapat berjalan. Azure menghasilkan tanda tangan menggunakan kombinasi unik dari kunci rahasia per aplikasi logika, nama pemicu, dan operasi yang dilakukan. Jadi, kecuali seseorang memiliki akses ke kunci aplikasi logika rahasia, mereka tidak dapat menghasilkan tanda tangan yang valid.

Penting

Untuk produksi dan sistem keamanan yang lebih tinggi, kami sangat menyarankan untuk tidak memanggil alur kerja Anda langsung dari browser karena alasan ini:

  • Kunci akses bersama muncul di URL.
  • Anda tidak dapat mengelola kebijakan konten keamanan karena domain bersama di seluruh pelanggan Azure Logic Apps.

Untuk informasi selengkapnya tentang keamanan, otorisasi, dan enkripsi untuk panggilan masuk ke alur kerja Anda, seperti Keamanan Lapisan Transportasi (TLS), yang sebelumnya dikenal sebagai Secure Sockets Layer (SSL), Microsoft Entra ID Open Authentication (Microsoft Entra ID OAuth), mengekspos alur kerja aplikasi logika Anda dengan Azure API Management, atau membatasi alamat IP yang berasal dari panggilan masuk, lihat Akses dan data aman - Akses untuk panggilan masuk ke pemicu berbasis permintaan.

T: Bisakah saya mengonfigurasi titik akhir yang dapat dipanggil lebih lanjut?

A: Ya, titik akhir HTTPS mendukung konfigurasi yang lebih canggih melalui Azure API Management. Layanan ini juga menawarkan kemampuan bagi Anda untuk mengelola semua API secara konsisten, termasuk aplikasi logika, menyiapkan nama domain kustom, menggunakan lebih banyak metode autentikasi, dan banyak lagi, misalnya:

Langkah berikutnya