Alıştırma - Uygulama oluşturmak için özel işleyici kullanma
Bu alıştırmada Go kullanarak sunucusuz bir uygulama oluşturacak ve çalıştıracaksınız.
Uygulamayı iskeleye ekle
Visual Studio Code'daki Azure İşlevleri uzantısını kullanarak uygulamanın iskelesini yaparak başlayın.
- Komut Paleti Görüntüle'yi>seçin.
- Azure İşlevleri: Yeni Proje Oluştur'u seçin.
- Genellikle geçerli klasörünüz olan bir klasör seçin.
- Dil seçin bölümünde Özel İşleyici'yi seçin.
- İlk işleviniz için şablon seçin bölümünde HttpTrigger'ı seçin.
- Uygulamaya merhaba gibi bir ad verin.
- Anonim yetkilendirme düzeyini seçin. İsterseniz bunu daha sonra değiştirebilirsiniz.
Şimdi aşağıdakine benzer bir projeniz var:
hello/
function.json
.funcignore
.gitignore
host.json
local.settings.json
proxies.json
Uygulamayı oluşturma
Sonraki adım serisi, BIR HTTP tetikleyicisine yanıt verebilen bir uygulama oluşturmaktır.
Proje kökünde server.go adlı bir dosya oluşturun.
server.go'ya aşağıdaki içeriği verin:
package main import ( "fmt" "io/ioutil" "log" "net/http" "os" )
Yukarıdaki kod, bir HTTP uygulaması oluşturmak ve ortam değişkenlerini aramak için ihtiyacınız olan tüm kitaplıkları içeri aktarır.
İçeri aktarma deyimlerinden sonra aşağıdaki kodu ekleyin:
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)) }
main()
İşlev tek başına çağrılır. Kodun ilk satırında ortam değişkenindenFUNCTIONS_CUSTOM_HANDLER_PORT
nasıl okunacağı belirtilir:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
Ardından işlev bağlantı noktasının var olup olmadığını denetler. Aksi takdirde işleve 8080 numaralı bağlantı noktası atanır:
if !exists { customHandlerPort = "8080" }
Sonraki kod bir HTTP sunucusu örneği oluşturur:
mux := http.NewServeMux()
Son önem derecesi, belirli bir bağlantı noktasını dinlemeye başlayan ve istekleri almaya hazır olduğunu belirten ve yöntemiyle
ListenAndServe()
gelen satırdır:log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux))
Şimdi kalan kodu ekleyelim. İlk olarak, aşağıdaki satırı yerelleştirin ve açıklamayı kaldırın:
// mux.HandleFunc("/api/hello", helloHandler)
import deyimleri ve işlevi arasında
main()
aşağıdaki kodu ekleyin: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) } }
İşlev,
helloHandler()
içerik türünü olarakapplication/json
ayarlar. "Merhaba dünya" veya varsa gönderilen gövde ile yanıt verir.
Uygulamayı çalıştırma
Bu noktada kodu yazmayı bitirdiniz, ancak bu senaryonun çalışması için bazı yapılandırmalar yapmanız gerekir. İşlev konağı tarafından bulunabilmesi için yürütülebilir dosyanızın nerede olduğuna dikkat etmeniz gerekir. Ayrıca yönlendirmeyi ve bu uygulamanın HTTP tetikleyicileriyle uğraştığını ve başka bağlama türü olmadığını yapılandırmanız gerekir.
Terminalden proje kökünde komutunu çalıştırın
go build server.go
:go build server.go
Bu adım, macOS ve Linux üzerinde sunucu veya Windows işletim sisteminde server.exe adlı yürütülebilir bir dosya oluşturur.
host.json dosyasını açın ve içindeki öğesini bulun.
defaultExecutablePath
customHandler
macOS ve Linux'ta veya.\server.exe
Windows işletim sisteminde belirtin./server
.öğesinin
customHandler
altına öğesini ekleyinenableForwardingHttpRequest
ve değerinitrue
verin. ÖğenizcustomHandler
şimdi şöyle görünmelidir:"customHandler": { "description": { "defaultExecutablePath": "./server", "workingDirectory": "", "arguments": [] }, "enableForwardingHttpRequest" : true }
Terminalden proje kökünde komutunu çalıştırın
func start
. Bunu yaptığınızda İşlevler uygulamanız başlatılır.func start
Çıkışın sonunda şuna benzer bir çıkış görürsünüz:
Functions: hello: [GET,POST] http://localhost:7071/api/hello
Tarayıcıda adresine
http://localhost:7071/api/hello
gidin. "Merhaba dünya" çıkışını görmeniz gerekir.
Tebrikler! Go'da sunucusuz bir uygulama geliştirdiniz.