Latihan - Membuat dan menguji Azure Function sederhana secara lokal dengan Visual Studio

Selesai

Visual Studio menyediakan lingkungan yang sangat baik untuk membuat dan menguji Azure Function App. Anda dapat mengembangkan Azure Function secara lokal, dan memverifikasi bahwa fungsinya beroperasi dengan benar, sebelum menyebarkannya ke cloud.

Dalam skenario situs web online jam tangan mewah, ada persyaratan untuk fungsi yang menampilkan informasi mendetail tentang jam tangan saat diberi nomor model jam tangan. Data yang perlu Anda kembalikan meliputi: produsen, jenis case back (solid, transparan, atau ukiran), bezel, gaya dial, finishing case, jumlah perhiasan, dan sebagainya.

Dalam latihan ini, Anda menerapkan dan menguji versi fungsi ini secara lokal menggunakan Visual Studio.

Catatan

Sebelum memulai latihan ini, pastikan Anda telah menginstal VS 2022, bersama dengan ekstensi beban kerja Web & Cloud ASP.NET dan pengembangan web dan pengembangan Azure.

Buat Azure Function App

Buat Azure Function App menggunakan templat Azure Functions.

  1. Luncurkan Penginstal Visual Studio dan pada halaman mulai Visual Studio 2022 , pilih Ubah.

  2. Pastikan ASP.NET dan pengembangan web dan pengembangan Azure dipilih dan tersedia (jika tidak, pilih Instal sambil mengunduh) lalu pilih Tutup.

    Cuplikan layar Visual Studio 2022 dengan beban kerja pengembangan asp dot net dan Azure disorot.

  3. Pada halaman mulai Visual Studio 2022 , pilih Luncurkan.

  4. Di menu Mulai, pilih Buat proyek baru. Halaman Buat proyek baru muncul.

  5. Cari atau gulir ke templat Azure Functions, lalu pilih Berikutnya.

    Cuplikan layar Visual Studio 2022 Buat halaman proyek baru dengan templat Azure Functions disorot.

  6. Halaman Konfigurasikan proyek baru Anda muncul. Masukkan nilai berikut.

    Bidang Nilai
    Nama proyek WatchPortalFunction
    Location Pilih lokasi untuk menyimpan proyek Anda dengan menelusuri folder atau membuat folder di komputer lokal Anda.
    Nama solusi Terima WatchPortalFunction (default).
    Tempatkan solusi dan proyek di direktori yang sama Tidak dicentang (TIDAK dipilih). Pengaturan ini memastikan struktur folder yang benar untuk modul ini.

    Cuplikan layar Konfigurasi halaman proyek baru Anda dengan buat disorot.

  7. Pilih Selanjutnya.

  8. Halaman Informasi tambahan muncul.

  9. Pilih nilai berikut.

    Bidang Nilai
    Versi Dotnet *.NET 6.0 (Dukungan Jangka Panjang)
    Pemicu fungsi Pemicu http
    Gunakan Azurite untuk akun penyimpanan runtime bahasa umum (AzureWebJobsStorage) Dicentang
    Aktifkan Docker Tidak Dicentang
    Tingkat otorisasi Anonim

    Jika pemberitahuan Visual Studio menunjukkan bahwa pembaruan sudah siap, pilih Refresh.

  10. Pilih Buat.

    Cuplikan layar yang menampilkan pemicu Azure Functions, dengan Pemicu HTTP disorot.

    Visual Studio membuat proyek WatchPortalFunction dan menampilkan file kode sumber Aplikasi Fungsi Function1.cs di jendela penyunting kode. File berisi kode untuk kelas bernama Function1.

    Seperti yang ditunjukkan dalam contoh kode berikut, Function1 kelas berisi kode boilerplate dari templat pemicu HTTP. Metode Run ini dianotasikan dengan [FunctionName ("Function1")] atribut. Pada unit sebelumnya, kami mengetahui bahwa parameter boilerplate untuk metode Run adalah objek HttpRequest yang berisi detail permintaan yang memicu fungsi, dan entri log jejak untuk merekam informasi jejak.

    namespace WatchPortalFunction
    {
        public static class Function1
        {
            [FunctionName("Function1")]
            public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
            {
                log.LogInformation("C# HTTP trigger function processed a request.");
    
                string name = req.Query["name"];
    
                string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
                dynamic data = JsonConvert.DeserializeObject(requestBody);
                name = name ?? data?.name;
    
                return name != null
                    ? (ActionResult)new OkObjectResult($"Hello, {name}")
                    : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
            }
        }
    }
    

Membuat WatchInfo Azure Function

  1. Di menu Tampilan, pilih Penjelajah Solusi. Di jendela Penjelajah Solusi, klik kanan proyek Azure Functions WatchPortalFunction, dan di menu konteks pilih Tambahkan>Azure Function Baru.

    Cuplikan layar jendela Penjelajah Solusi. Pengguna telah memilih Tambahkan -> Fungsi Azure Baru.

  2. Di jendela Tambahkan Item Baru - WatchPortalFungsi, pilih Azure Function. Dalam bidang Nama, masukkan WatchInfo.cs, lalu pilih Tambahkan.

    Cuplikan layar jendela Tambahkan Item Baru. Templat Azure Function dipilih, dan fungsi baru diberi nama WatchInfo.cs.

  3. Di jendela Azure Function Baru - WatchInfo, pilih Pemicu http. Pada daftar drop-down Tingkat otorisasi, pilih Anonim, lalu pilih Tambahkan.

    Cuplikan layar jendela Fungsi Azure Baru. Pemicu Http dengan hak akses Anonim dipilih.

    Visual Studio membuat fungsi baru dan metode Run beranotasi dengan atribut [FunctionName("WatchInfo")].

  4. Di isi fungsi Run, hapus kode setelah baris log.LogInformation. Hasilnya akan terlihat seperti ini.

    namespace WatchPortalFunction
    {
        public static class WatchInfo
        {
            [FunctionName("WatchInfo")]
            public static async Task<IActionResult> Run(
                [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
                ILogger log)
            {
                log.LogInformation("C# HTTP trigger function processed a request.");
            }
        }
    }
    
  5. Masukkan kode berikut di bagian isi metode Run setelah baris log.LogInformation.

    // Retrieve the model id from the query string
    string model = req.Query["model"];
    
    // If the user specified a model id, find the details of the model of watch
    if (model != null)
    {
        // Use dummy data for this example
        dynamic watchinfo = new { Manufacturer = "abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = 15 };
    
        return (ActionResult)new OkObjectResult($"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}");
    }
    return new BadRequestObjectResult("Please provide a watch model in the query string");
    

    Kode ini membaca parameter model dari string kueri dalam permintaan dan mengembalikan detail untuk model jam tangan tersebut. Dalam contoh kode ini, kami membuat data dummy watchinfo yang dikembalikan terlepas dari modelnilai . Fungsi mengembalikan respons yang berisi detail ini. Atau, jika permintaan HTTP tidak menyertakan string kueri, fungsi mengembalikan pesan kesalahan. Dalam contoh dunia nyata, Anda akan menggunakan model nilai untuk melakukan pencarian yang benar watchinfo untuk dikembalikan.

Menguji Azure Function secara lokal

  1. Di bilah perintah, pilih Debug>Mulai Penelusuran Kesalahan.

    Visual Studio menyusun Azure Function App dan memulai runtime Azure Functions. Jendela Output terbuka untuk menampilkan pesan saat runtime dimulai. Ketika runtime siap, daftar fungsi HTTP dan URL yang dapat Anda gunakan untuk memicu setiap fungsi ditampilkan.

    Cuplikan layar jendela runtime Bahasa Umum Azure Functions. Runtime memulai Azure Function App, dan menampilkan URL untuk Azure Functions 'Function1' dan 'WatchInfo'.

  2. Buka browser web, dan masukkan URL yang ditampilkan di jendela runtime. URL default adalah http://localhost:7071/api/WatchInfo?model=abc, jadi itulah yang kami gunakan dalam latihan ini. Permintaan memicu WatchInfo fungsi dan meneruskan model abc sebagai parameter string kueri. Browser web harus menampilkan detail dummy yang dihasilkan oleh fungsi .

    Cuplikan layar browser web yang memicu Fungsi Azure WatchInfo. Fungsi mengembalikan detail dummy untuk model yang ditentukan dalam string kueri URL yang disediakan.

  3. Masukkan URL http://localhost:7071/api/WatchInfo. Permintaan ini tidak menyertakan string kueri. Pemicu menampilkan respons kesalahan dan browser web menampilkan Please provide a watch model in the query string pesan.

  4. Tutup browser web, tapi biarkan Azure Function App berjalan.

  5. Di Visual Studio, atur breakpoint pada baris kode yang mengambil model dari string kueri.

    Cuplikan layar Visual Studio yang menampilkan titik henti pada pernyataan yang membaca model dari string kueri.

  6. Mulai ulang browser web, dan masukkan URL tanpa string kueri http://localhost:7071/api/WatchInfo.

    Visual Studio menyoroti kode di titik henti tempat eksekusi dijeda.

  7. Di Visual Studio, untuk melangkahi pernyataan di breakpoint, tekan F10.

  8. Di tab Otomatis pada jendela Debugger, verifikasi bahwa variabel model adalah null. Variabel menunjukkan nilai ini karena string kueri tidak berisi parameter model.

    Cuplikan layar penelusur kesalahan Visual Studio yang menampilkan nilai variabel model.

  9. Tekan F10 lagi, dan verifikasi bahwa kontrol melompat ke pernyataan yang mengembalikan BadRequestObjectResult objek.

  10. Untuk terus menjalankan metode dan kembali ke browser web, tekan F5. Pesan kesalahan yang sama akan ditampilkan.

  11. Di browser web, masukkan URL dengan string kueri dan parameter model. Telusuri fungsi di debugger, dan verifikasi bahwa model diambil dengan benar. modelVariabel harus diisi dengan nilai parameter, dan detail model yang dikembalikan sebagai OkObjectResult objek.

  12. Di bilah menu, pilih Debug>Hentikan Penelusuran Kesalahan.

Dalam latihan ini, Anda melihat bagaimana ekstensi Alat Azure Functions di Visual Studio menyederhanakan pengalaman membuat Aplikasi Fungsi Azure, dengan memungkinkan Anda menggunakan alat yang sudah dikenal untuk membangun dan men-debug kode Anda.