Latihan - Menggunakan handler kustom untuk membangun aplikasi
Dalam latihan ini, Anda akan membuat dan menjalankan aplikasi tanpa server menggunakan Go.
Menguraikan aplikasi
Mulailah dengan membuat perancah aplikasi, dengan menggunakan ekstensi Azure Functions di Visual Studio Code.
- Pilih Tampilkan>Palet Perintah.
- Pilih Azure Functions: Buat Proyek Baru.
- Pilih folder, biasanya folder Anda saat ini.
- Di Pilih bahasa, pilih Handler Kustom.
- Di Pilih templat untuk fungsi pertama Anda, pilih HttpTrigger.
- Beri nama aplikasi, seperti halo.
- Pilih tingkat otorisasi anonim. Anda bisa mengubah nama nanti jika mau.
Sekarang Anda memiliki proyek yang terlihat seperti ini:
hello/
function.json
.funcignore
.gitignore
host.json
local.settings.json
proxies.json
Membuat aplikasi
Serangkaian langkah berikutnya adalah untuk membuat aplikasi yang dapat merespons pemicu HTTP.
Buat file bernama server.go di akar proyek.
Berikan konten berikut pada server.go :
package main import ( "fmt" "io" "log" "net/http" "os" )Kode sebelumnya mengimpor semua pustaka yang Anda butuhkan untuk membangun aplikasi HTTP dan mencari variabel lingkungan.
Tambahkan kode berikut setelah pernyataan cetak:
func main() { customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT") if !exists { customHandlerPort = "8080" } mux := http.NewServeMux() // mux.HandleFunc("/api/hello", helloHandler) fmt.Println("Go server Listening on: ", customHandlerPort) log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux)) }Fungsi
main()ini dipanggil dengan sendirinya. Baris pertama kode menyatakan bagaimana kode dibaca dariFUNCTIONS_CUSTOM_HANDLER_PORTvariabel lingkungan:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")Selanjutnya, fungsi memeriksa apakah port tersebut ada. Jika tidak, fungsi ditetapkan ke port 8080:
if !exists { customHandlerPort = "8080" }Kode berikutnya membuat instans server HTTP:
mux := http.NewServeMux()Baris penting terakhir adalah baris yang mulai mendengarkan port tertentu dan memberi sinyal bahwa ia siap untuk menerima permintaan, dengan metode
ListenAndServe():log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))Mari kita tambahkan kode yang tersisa. Pertama, temukan baris berikut dan batalkan komentarnya:
// mux.HandleFunc("/api/hello", helloHandler)Di antara pernyataan impor dan fungsi
main(), tambahkan kode berikut:func helloHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") if r.Method == "GET" { w.Write([]byte("hello world")) } else { body, _ := io.ReadAll(r.Body) w.Write(body) } }Fungsi
helloHandler()mengatur jenis konten keapplication/json. Ini akan merespons dengan "halo dunia" atau isi yang diposting, jika ada.
Menjalankan aplikasi
Anda sudah menyelesaikan penulisan kode pada titik ini, tetapi Anda perlu melakukan beberapa konfigurasi agar skenario ini berfungsi. Anda perlu menunjukkan di mana file yang dapat dieksekusi berada, sehingga host Fungsi dapat menemukannya. Anda juga perlu mengonfigurasi perutean dan menyatakan bahwa aplikasi ini menangani pemicu HTTP dan tidak ada jenis pengikatan lainnya.
Dari terminal, jalankan
go build server.godi akar proyek:go build server.goLangkah ini membuat file yang dapat dieksekusi yang disebut server di macOS dan Linux, atau server.exe pada OS Windows.
Buka file host.json dan temukan elemen
defaultExecutablePathdi dalamcustomHandler. Nyatakan./serverdi macOS dan Linux, atau.\\server.exepada OS Windows.Di bawah elemen
customHandler, tambahkan elemenenableForwardingHttpRequestdan berikan nilaitrue. ElemencustomHandlerAnda akan terlihat seperti ini:"customHandler": { "description": { "defaultExecutablePath": "./server", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest" : true }Dari terminal, jalankan
func startdi akar proyek. Dengan melakukan itu, aplikasi Functions Anda akan memulai.func startDi akhir output, Anda akan melihat output yang mirip dengan:
Functions: hello: [GET,POST] http://localhost:7071/api/helloDi browser, pergi ke
http://localhost:7071/api/hello. Anda akan melihat output "halo dunia".
Selamat! Anda telah mengembangkan aplikasi tanpa server di Go.