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 Lihat>Pallet Perintah.
- Pilih Azure Functions: Buat Project 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 server.go konten berikut:
package main import ( "fmt" "io/ioutil" "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 akan dibaca dari variabel lingkunganFUNCTIONS_CUSTOM_HANDLER_PORT
: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, lokalkan baris berikut dan nonaktifkan komentar:
// 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, _ := ioutil.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.go
di akar proyek:go build server.go
Langkah 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
defaultExecutablePath
di dalam filecustomHandler
. Nyatakan./server
di macOS dan Linux, atau.\server.exe
pada OS Windows.Di bawah elemen
customHandler
, tambahkan elemenenableForwardingHttpRequest
dan berikan nilaitrue
. ElemencustomHandler
Anda akan terlihat seperti ini:"customHandler": { "description": { "defaultExecutablePath": "./server", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest" : true }
Dari terminal, jalankan
func start
di akar proyek. Dengan melakukan itu, aplikasi Functions Anda akan memulai.func start
Di akhir output, Anda akan melihat output yang mirip dengan:
Functions: hello: [GET,POST] http://localhost:7071/api/hello
Di browser, pergi ke
http://localhost:7071/api/hello
. Anda akan melihat output "halo dunia".
Selamat! Anda telah mengembangkan aplikasi tanpa server di Go.