Mengkustomisasi titik akhir HTTP di Azure Functions

Dalam artikel ini, Anda mempelajari bagaimana Azure Functions memungkinkan Anda membuat API yang sangat dapat terskalakan. Azure Functions hadir dengan kumpulan pemicu dan pengikatan HTTP bawaan yang memudahkan membuat titik akhir dalam berbagai bahasa pemrogram, termasuk Node.js, C#, dan banyak lagi. Dalam artikel ini, Anda akan mengkustomisasi pemicu HTTP untuk menangani tindakan tertentu dalam desain API Anda. Anda juga akan bersiap untuk mengembangkan API dengan mengintegrasikannya terhadap Azure Functions Proxies dan menyiapkan API tiruan. Tugas-tugas ini diselesaikan di atas lingkungan komputasi tanpa server Functions, jadi Anda tidak perlu khawatir tentang penskalaan sumber daya - Anda dapat fokus pada logika API Anda.

Penting

Proksi Azure Functions adalah fitur warisan untuk versi 1.x hingga 3.x dari runtime Azure Functions. Dukungan untuk proksi dapat diaktifkan kembali di versi 4.x agar Anda berhasil meningkatkan aplikasi fungsi ke versi runtime terbaru. Sesegera mungkin, Anda harus beralih untuk mengintegrasikan aplikasi fungsi Anda dengan Azure API Management. Azure API Management memungkinkan Anda memanfaatkan serangkaian fitur yang lebih lengkap untuk menentukan, mengamankan, mengelola, dan memonetisasi API berbasis Functions Anda. Untuk informasi selengkapnya, lihat Integrasi API Management.

Untuk mempelajari cara mengaktifkan kembali dukungan proksi di Functions versi 4.x, lihat Mengaktifkan kembali proksi di Functions v4.x.

Prasyarat

Topik ini digunakan sebagai titik awal sumber daya yang dibuat di Membuat fungsi pertama Anda dari portal Microsoft Azure. Jika Anda belum melakukannya, silakan selesaikan langkah-langkah ini sekarang untuk membuat aplikasi fungsi Anda.

Fungsi yang dihasilkan akan digunakan untuk sisa artikel ini.

Masuk ke Azure

Masuk ke portal Azure dengan akun Azure Anda.

Kustomisasi fungsi HTTP Anda

Secara default, fungsi pemicu HTTP Anda dikonfigurasi untuk menerima metode HTTP mana pun. Anda juga dapat menggunakan URL default, https://<yourapp>.azurewebsites.net/api/<funcname>?code=<functionkey>. Di bagian ini, Anda mengubah fungsi untuk menanggapi permintaan GET dengan /api/hello saja.

  1. Navigasi ke fungsi Anda di portal Microsoft Azure. Pilih Integrasi di menu sebelah kiri, lalu pilih HTTP (req) di bawah Pemicu.

    Mengkustomisasi fungsi HTTP

  2. Gunakan pengaturan pemicu HTTP seperti yang ditentukan dalam tabel berikut.

    Bidang Sampel nilai Deskripsi
    Templat rute halo Menentukan rute apa yang digunakan untuk memanggil fungsi ini
    Tingkat otorisasi Anonim Opsional: Membuat fungsi Anda terakses tanpa kunci API
    Metode HTTP yang dipilih GET Hanya mengizinkan metode HTTP terpilih yang digunakan untuk memanggil fungsi ini

    Anda tidak perlu menyertakan /api prefiks jalur dasar dalam templat rute karena telah ditangani oleh pengaturan global.

  3. Pilih Simpan.

Untuk informasi selengkapnya tentang mengkustomisasi fungsi HTTP, lihat Pengikatan HTTP Azure Functions.

Uji API Anda

Selanjutnya, uji fungsi Anda untuk melihat cara kerjanya dengan permukaan API baru:

  1. Pada halaman fungsi, pilih Kode + Uji dari menu kiri.

  2. Pilih Dapatkan URL fungsi dari menu atas dan salin URL. Konfirmasikan bahwa sekarang menggunakan jalur /api/hello.

  3. Salin URL ke tab browser baru atau klien REST pilihan Anda.

    Browser menggunakan GET secara default.

  4. Tambahkan parameter ke untai (karakter) kueri di URL Anda.

    Contohnya,/api/hello/?name=John.

  5. Tekan Enter untuk mengonfirmasi bahwa uji berfungsi. Anda harus melihat tanggapan, "Hello John."

  6. Anda juga dapat mencoba memanggil titik akhir dengan metode HTTP lain untuk mengonfirmasi bahwa fungsi tersebut tidak dijalankan. Untuk melakukannya, gunakan klien REST, seperti cURL, Postman, atau Fiddler.

Ikhtisar proksi

Pada bagian berikutnya, Anda akan menampilkan API melalui proksi. Azure Functions Proxies memungkinkan Anda meneruskan permintaan ke sumber daya lain. Anda mendefinisikan titik akhir HTTP seperti halnya pemicu HTTP. Namun, alih-alih menulis kode untuk dieksekusi saat titik akhir itu dipanggil, Anda memberikan URL ke implementasi jarak jauh. Dengan melakukan hal tersebut memungkinkan Anda untuk menyusun beberapa sumber API ke dalam satu permukaan API yang mudah digunakan klien dan berguna jika Anda ingin membangun API Anda sebagai layanan mikro.

Proksi dapat menunjuk ke sumber daya HTTP mana pun, seperti:

Untuk mempelajari selengkapnya tentang proksi, lihat Bekerja dengan Proksi Azure Functions.

Catatan

Proksi tersedia di Azure Functions versi 1.x hingga 3.x.

Buat proksi pertama Anda

Pada bagian ini, Anda membuat proxy baru yang berfungsi sebagai frontend ke API Anda secara keseluruhan.

Menyiapkan lingkungan frontend

Ulangi langkah-langkah Buat aplikasi fungsi untuk membuat aplikasi fungsi baru tempat Anda membuat proksi. URL aplikasi baru ini berfungsi sebagai frontend untuk API kami, dan aplikasi fungsi yang sebelumnya Anda edit berfungsi sebagai backend.

  1. Navigasi ke aplikasi fungsi frontend baru Anda di portal.

  2. Pilih Konfigurasi dan pilih Pengaturan Aplikasi.

  3. Gulir ke bawah ke Pengaturan aplikasi, tempat pasangan kunci/nilai disimpan dan buat pengaturan baru dengan kunci HELLO_HOST. Tetapkan nilainya ke host aplikasi fungsi backend Anda, seperti <YourBackendApp>.azurewebsites.net. Nilai ini adalah bagian dari URL yang Anda salin sebelumnya saat menguji fungsi HTTP Anda. Anda akan mereferensikan pengaturan ini dalam konfigurasi nanti.

    Catatan

    Pengaturan aplikasi direkomendasikan untuk konfigurasi host guna mencegah dependensi lingkungan yang dikodekan secara permanen untuk proxy. Menggunakan pengaturan aplikasi berarti Anda dapat memindahkan konfigurasi proksi antar lingkungan, dan pengaturan aplikasi khusus lingkungan akan diterapkan.

  4. Pilih Simpan.

Membuat proksi di frontend

  1. Navigasi kembali ke aplikasi fungsi front-end Anda di portal.

  2. Di menu sebelah kiri, pilih Proksi, lalu pilih Tambahkan.

  3. Pada halaman Proksi Baru gunakan pengaturan dalam tabel berikut ini, lalu pilih Buat.

    Bidang Sampel nilai Deskripsi
    Nama HelloProxy Nama bersahabat yang hanya digunakan untuk manajemen
    Templat rute /api/remotehello Menentukan rute mana yang digunakan untuk memanggil fungsi ini
    URL backend https://%HELLO_HOST%/api/hello Menentukan titik akhir tempat permintaan harus diproksi

    Membuat proksi

    Azure Functions Proxies tidak menyediakan prefiks jalur dasar /api, yang harus disertakan dalam templat rute. Sintaks %HELLO_HOST% mereferensikan pengaturan aplikasi yang Anda buat sebelumnya. URL yang diselesaikan akan menunjuk ke fungsi asli Anda.

  4. Anda dapat mencoba proksi baru Anda dengan menyalin URL Proksi dan mengujinya di browser atau dengan klien HTTP favorit Anda:

    • Untuk fungsi anonim gunakan: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?name="Proxies".
    • Untuk fungsi dengan otorisasi, gunakan: https://YOURPROXYAPP.azurewebsites.net/api/remotehello?code=YOURCODE&name="Proxies".

Membuat API tiruan

Selanjutnya, Anda akan menggunakan proksi untuk membuat API tiruan untuk solusi Anda. Proksi ini memungkinkan pengembangan klien untuk maju tanpa perlu backend terimplementasi sepenuhnya. Kemudian dalam pengembangan, Anda dapat membuat aplikasi fungsi baru yang mendukung logika ini dan mengarahkan proksi Anda ke sana.

Untuk membuat API tiruan ini, kami akan membuat proksi baru menggunakan Editor App Service. Untuk memulai, navigasi ke aplikasi fungsi Anda di portal. Pilih fitur Platform, lalu pada Alat Pengembangan temukan Editor App Service. Editor App Service terbuka di tab baru.

Pilih proxies.json di navigasi kiri. File ini menyimpan konfigurasi untuk semua proksi Anda. Jika Anda menggunakan salah satu Metode penyebaran Functions, Anda mempertahankan file ini dalam kontrol sumber. Untuk mempelajari selengkapnya tentang file ini, lihat Konfigurasi Proksi tingkat lanjut.

Jika Anda telah mengikuti sejauh ini, proxies.json Anda seharusnya terlihat seperti berikut:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HelloProxy": {
            "matchCondition": {
                "route": "/api/remotehello"
            },
            "backendUri": "https://%HELLO_HOST%/api/hello"
        }
    }
}

Selanjutnya, Anda akan menambahkan API tiruan Anda. Ganti file proxies.json Anda dengan kode berikut:

{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "HelloProxy": {
            "matchCondition": {
                "route": "/api/remotehello"
            },
            "backendUri": "https://%HELLO_HOST%/api/hello"
        },
        "GetUserByName" : {
            "matchCondition": {
                "methods": [ "GET" ],
                "route": "/api/users/{username}"
            },
            "responseOverrides": {
                "response.statusCode": "200",
                "response.headers.Content-Type" : "application/json",
                "response.body": {
                    "name": "{username}",
                    "description": "Awesome developer and master of serverless APIs",
                    "skills": [
                        "Serverless",
                        "APIs",
                        "Azure",
                        "Cloud"
                    ]
                }
            }
        }
    }
}

Kode ini menambahkan proksi baru, GetUserByName, tanpa properti backendUri. Alih-alih memanggil sumber daya lain, kode ini memodifikasi respons default dari Proxies menggunakan ambil alih respons. Ambil alih permintaan dan respons juga dapat digunakan dengan URL backend. Teknik ini sangat berguna saat memproksi ke sistem warisan, di mana Anda mungkin perlu memodifikasi header, parameter kueri, dan sebagainya. Untuk mempelajari selengkapnya tentang ambil alih permintaan dan respons, lihat Memodifikasi permintaan dan respons di Proksi.

Uji API tiruan Anda dengan memanggil titik akhir <YourProxyApp>.azurewebsites.net/api/users/{username} menggunakan browser atau klien REST favorit Anda. Pastikan untuk mengganti {nama pengguna} dengan nilai untai (karakter) yang mewakili nama pengguna.

Langkah berikutnya

Dalam artikel ini, Anda mempelajari cara membangun dan mengkustomisasi API di Azure Functions. Anda juga mempelajari cara membawa beberapa API, termasuk tiruan, bersama-sama sebagai permukaan API terpadu. Anda dapat menggunakan teknik dalam tutorial ini untuk membangun API dari kompleksitas apa pun sambil berjalan pada model komputasi tanpa server yang disediakan oleh Azure Functions.

Referensi berikut mungkin berguna saat Anda mengembangkan API Anda lebih lanjut: