Web uygulaması
Özel işleyici kullanmak için bir web uygulaması yazmanız gerekir. Uygulamanızı yazıp derledikten sonra, nasıl kullanılacağını bilmesi için Azure İşlevleri konağı yapılandırmanız gerekir. Daha sonra bu konu hakkında daha fazla bilgi edineceğiz. İlk olarak, Go'da bir web uygulamasını nasıl oluşturursunuz?
Go'da REST API oluşturma
Go kullanarak REST API oluşturmak için birkaç şey bilmeniz gerekir:
Kitaplıkları içeri aktar. ,
fmtvelogkitaplıklarınınet/httpkullanırsınız. Bu kitaplıklar yolları yönetmenize, gelen istekleri işlemenize ve günlük kaydıyla ilgilenmenize yardımcı olur. Aşağıdaki içeri aktarma deyimini kullanın:import ( "fmt", "log", "net/http" )Yönlendirmeyi ayarlayın. REST API'leri, yollar olarak adlandırılan mantıksal bölmelerden oluşur. Yollar, uygulamadaki belirli bir endişeye yanıt veren adreslerdir. Örnek
HandleFunc()üzerindehttpyöntemini çalıştırarak yol ayarlayın ve istekleri yanıtlamak için rotayı tanımlayın.http.HandleFunc("/", handleRoute)Bu durumda, gelen istekleri
handleRouteile eşleştirmek için bir"/"işlev oluşturmanız gerekir.İstekleri yönetme. Gelen istekleri yönetmeniz ve yönlendirici, sorgu parametreleri veya gönderilmiş bir gövde gibi öğeleri okumanız gerekir. Ardından bir yanıt oluşturmanız gerekir. bir isteği işleyen bir işlev aşağıdaki gibi görünebilir:
func handleRequest(w: http:ResponseWriter, r: http.Request) { fmt.Fprintf(w, "My first REST API") }Kod, "İlk REST API'm" metnini çağıran istemciye geri gönderir. yöntemi
Fprintf()iki bağımsız değişken alır: yanıt akışı ve geri gönderilecek dize.Sunucuyu oluşturun. İstekleri dinleyebilmek için sunucuyu başlatmanız gerekir. İsteklerin gönderilebileceği bir bölüm de belirtmeniz gerekir. Aşağıdaki kod, sunucunun nasıl oluşturulacağını gösterir:
http.ListenAndServe(":3000", nil)Sunucu artık çalışır durumdadır ve 3000 numaralı bağlantı noktasındaki istekleri dinleyebilir.
Azure İşlevleri uygulaması oluşturma
bir Azure İşlevleri uygulaması geliştirmeden önce şunları yapmanızı öneririz:
Visual Studio Code'u yükleyin. Herhangi bir metin düzenleyicisi veya IDE ile Azure İşlevleri uygulama yazabilirsiniz. Bu modül, yazmayı kolaylaştıran bazı uzantıları gösterir.
Azure İşlevleri için Visual Studio Code uzantısını yükleyin. Bu uzantı bir İşlevler uygulamasının iskelesini oluşturmanıza, çalıştırmanıza ve hata ayıklamanıza yardımcı olur.
Azure İşlevleri Temel Araçları'nı yükleyin. Bu yükleme, diğer şeylerin yanı sıra İşlevler uygulamanızı çalıştırmanıza olanak tanıyan yürütülebilir bir
funckomut içerir.
Visual Studio Code kullanarak İşlevler uygulamasının iskelesini oluşturma
Sisteminizde gerekli tüm bağımlılıklar yüklendikten sonra, bir sonraki adım bir uygulamanın iskelesini kurmaktır. Çalışma zamanı hakkında sorulduğunda Özel İşleyici'yi seçin.
Şimdi doğru dosyaların oluşturulmasını sağladınız. Bu şekilde bir proje oluşturduğunuzda, ilk işleviniz için bir tetikleyici türü seçmeniz gerekir. Özel işleyiciler tüm olağan tetikleyiciler ve bağlayıcılarla çalışır.
Projeyi oluşturma işlemini tamamladıktan sonra aşağıdaki dosyaları içeren bir uygulamanız olmalıdır:
- host.json
- local.setting.json
- proxies.json
- function.json
function.json dosyası, adı ilk işlevinizi adlandırdığınız ada karşılık gelen bir dizindedir. İşlevinizi yapılandırmak için bu dosyayı kullanırsınız.
Projeyi yapılandırma
Uygulamanızın HTTP temel öğeleriyle çalışması için birkaç şey yapılandırmanız gerekir:
Özel işleyici bağlantı noktasını dinleyin. Uygulamanızın belirli bir bağlantı noktasını dinlemesi gerekir. değişkeni
FUNCTIONS_CUSTOMHANDLER_PORT, ihtiyacınız olan değeri içerir. Aşağıdaki kodu kullanarak bağlantı noktası değerini arayabilirsiniz:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")Varsayılan yürütülebilir yolu yapılandırın. Yürütülebilir bir dosya derlediğiniz için İşlevler uygulama projenize dosyanın bulunduğu yeri söylemeniz gerekir.
Proje kökünde function.json dosyasını bulun.
customHandlerbölümündedefaultExecutablePatholarak belirtin. Aşağıda nasıl görünebileceğine bir örnek verilmiştir:"customHandler": { "defaultExecutablePath": "mygoapp.exe" }İstek iletmeyi etkinleştirin. HTTP tetikleyicisi kullanan bir işlevle çalışırken, uygulamayı başka bir tetikleyici türüyle (kuyruk tetikleyicisi gibi) ilgilendiğiniz durumlardan biraz farklı yapılandırmak istersiniz.
adlı
enableForwardingHttpRequestbir özelliği etkinleştirin. Bu özellik etkinleştirildiğinde, isteğin nasıl işleneceğinin davranışını aşağıdaki yollarla değiştirir:Özgün isteğin kopyası. HTTP isteği, özel işleyicinin istek yükünü içermez. Bunun yerine İşlevler ana bilgisayarı, işleyiciyi özgün HTTP isteğinin bir kopyasıyla çağırır.
Özgün istekle aynı yol. İşlevler kapsayıcısı, işleyiciyi özgün isteğin yoluyla aynı şekilde çağırır.
Bir rota ve rota işleyicisi tanımlarken, yönlendirmeyi nasıl ayarladığınıza dair özgün davranmanız gerekir. Aşağıdaki proje ana hattına sahip olduğunuzu varsayalım:
hello/ function.jsonAna hattaki dosyalar varsayılan olarak bir yola
/api/helloeşlenir. Yolu ayarlama kodunuzda tam yolu belirtmeniz gerekir:mux.HandleFunc("/api/hello", helloHandler)Bu ayarı etkinleştirmediyseniz, diğer tetikleyici ve bağlama türleri için yönlendirici kodunu
"/hello"belirtmek yeterli olurdu.İşleyicinin yanıtının kopyası. İşlevler ana bilgisayarı, özgün isteğe yanıt olarak işleyicinin HTTP yanıtının bir kopyasını döndürür.
Yukarıdaki örnekte yürütülebilir dosya şeklindedir mygoapp.exe. Örnekte, yürütülebilir dosyayı adlı mygoapp.gobir dosyadan oluşturduğunuz varsayılır, ancak Go dosyanıza istediğiniz adı vekleyebilirsiniz. Linux veya macOS'ta yürütülebilir dosyanın uzantısı yoktur.
Uygulamayı oluşturma
Bu noktada web uygulamasını oluşturmak, Go kullanarak herhangi bir web uygulaması oluşturmaktan çok farklı değildir. Önceki bölümde açıklanan yapılandırmayı tamamladığınız sürece hazırsınız demektir.
Şimdi aşağıdaki adımları uygulamanız gerekir:
- Bağlantı noktasını okuyun.
- BIR HTTP sunucusu örneği oluşturun.
- Yolları ve yol işleyicilerini tanımlayın.
- Dinleme işlemini portta başlatın.
customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")
if !exists {
customHandlerPort = "8080"
} // 1)
mux := http.NewServeMux() // 2)
mux.HandleFunc("/order", orderHandler) // 3)
fmt.Println("Go server Listening on: ", customHandlerPort)
log.Fatal(http.ListenAndServe(":"+customHandlerPort, mux)) // 4)