Aplicație web
Pentru a utiliza o rutină de tratare particularizată, trebuie să creați o aplicație web. După ce ați scris aplicația și ați compilat-o, trebuie să configurați gazda Funcții Azure, astfel încât să știe cum să o utilizeze. Vom explora mai multe despre aceasta mai târziu. Mai întâi, cum construiți o aplicație web în Deplasare?
Construiți o interfață API REST în deplasare
Pentru a construi o interfață API REST utilizând Go, trebuie să știți câteva lucruri:
Import biblioteci. Utilizați bibliotecile
fmt,log, șinet/http. Aceste biblioteci vă ajută să gestionați rutele, să gestionați solicitările primite și să vă ocupați de înregistrarea în jurnal. Utilizați următoarea instrucțiune de import:import ( "fmt", "log", "net/http" )Configurați rutarea. API-urile REST constau din diviziuni logice denumite rute . Rutele sunt adrese care răspund la o anumită preocupare din aplicație. Pentru a configura o rută, apelați metoda de
HandleFunc()în instanțahttpși definiți ruta de răspuns la solicitări:http.HandleFunc("/", handleRoute)În acest caz, trebuie să creați o funcție de
handleRoutepentru a potrivi solicitările de intrare în raport cu"/"rutei"/".Gestionați solicitările. Trebuie să gestionați solicitările de intrare și să citiți lucruri cum ar fi parametrii ruterului sau interogării sau un corp publicat. Atunci trebuie să construiți un răspuns. O funcție care gestionează o solicitare poate arăta astfel:
func handleRequest(w: http:ResponseWriter, r: http.Request) { fmt.Fprintf(w, "My first REST API") }Codul trimite textul "Primul meu API REST" către un client de apelare. Metoda
Fprintf()preia două argumente: fluxul de răspuns și șirul de trimis înapoi.Creați serverul. Pentru a putea asculta solicitările, trebuie să porniți serverul. De asemenea, trebuie să specificați o parte la care se pot trimite solicitări. Următorul cod vă arată cum să creați serverul:
http.ListenAndServe(":3000", nil)Serverul este acum sus și poate asculta solicitările pe portul 3000.
Crearea unei aplicații Funcții Azure
Înainte de a dezvolta o aplicație Azure Functions, vă recomandăm:
Instalațivisual Studio Code . Puteți crea aplicații Azure Functions cu orice editor de text sau IDE. Acest modul prezintă câteva extensii care simplifică crearea.
Instalați extensia Visual Studio Code pentru funcțiile Azure. Această extensie vă ajută să configurați o aplicație Functions, să o rulați și să o depanați.
instalați instrumente de bază Azure Pentru. Această instalare include o comandă executabilă
funccare vă permite, printre altele, să rulați aplicația Functions.
Eșafodarea unei aplicații Funcții utilizând Visual Studio Code
După ce aveți instalate toate dependențele necesare pe sistem, următorul pas este să scaffoldați o aplicație. Atunci când sunteți întrebat despre modulul runtime, alegeți rutină de tratare particularizată .
Acum ați asigurat că fișierele corecte vor fi generate. Atunci când generați un proiect astfel, trebuie să selectați un tip de declanșator pentru prima funcție. Rutinele de tratare particularizate funcționează cu toate declanșatoarele și legările obișnuite.
După ce terminați de generat proiectul, ar trebui să aveți o aplicație cu următoarele fișiere:
- host.json
- local.setting.json
- proxies.json
- function.json
Fișierul function.json se află într-un director al cărui nume corespunde numelui pe care l-ați denumit prima funcție. Utilizați acest fișier pentru a vă configura funcția.
Configurarea proiectului
Pentru ca aplicația dvs. să funcționeze cu primitive HTTP, trebuie să configurați câteva lucruri:
Ascultați un port de rutină de tratare particularizat. Aplicația dvs. trebuie să asculte un anumit port. Variabila
FUNCTIONS_CUSTOMHANDLER_PORTconține valoarea de care aveți nevoie. Puteți căuta valoarea portului utilizând următorul cod:customHandlerPort, exists := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT")Configurați calea executabilă implicită. Pentru că construiți un fișier executabil, trebuie să spuneți proiectului aplicației Functions unde se află.
Găsiți fișierul function.json în rădăcina proiectului. În secțiunea
customHandler, specificațidefaultExecutablePath. Iată un exemplu cu cum poate arăta:"customHandler": { "defaultExecutablePath": "mygoapp.exe" }Activați redirecționarea solicitărilor. Atunci când aveți de-a face cu o funcție care utilizează un trigger HTTP, doriți să configurați aplicația ușor diferit decât dacă ați avea de-a face cu un alt tip de trigger (cum ar fi un trigger de coadă).
Activați o proprietate denumită
enableForwardingHttpRequest. Atunci când această proprietate este activată, aceasta modifică comportamentul modului în care se gestionează solicitarea în următoarele moduri:Copie a solicitării originale. Solicitarea HTTP nu conține sarcina de solicitare a handlerului particularizat. În schimb, gazda Functions apelează rutina de tratare cu o copie a solicitării HTTP originale.
Aceeași cale ca solicitarea inițială. Gazda Functions apelează rutina de tratare cu aceeași cale ca solicitarea inițială.
Atunci când definiți o rută și o rutină de tratare a rutelor, trebuie să fiți specific în modul în care configurați rutarea. Să presupunem că aveți următoarea schiță de proiect:
hello/ function.jsonFișierele din schiță sunt mapate la o rută
/api/helloîn mod implicit. În codul dvs. pentru configurarea traseului, trebuie să specificați ruta completă:mux.HandleFunc("/api/hello", helloHandler)Dacă nu ați activat această setare, pentru alte tipuri de triggere și legări, specificarea codului ruterului ca
"/hello"ar fi fost suficientă.Copie a răspunsului rutinei de tratare. Gazda Functions returnează o copie a răspunsului HTTP al rutinei de tratare ca răspuns la solicitarea inițială.
În exemplul anterior, fișierul executabil este mygoapp.exe. Exemplul presupune că creați fișierul executabil dintr-un fișier denumit mygoapp.go, dar puteți denumi fișierul Salt orice doriți. Pe Linux sau macOS, fișierul executabil nu are o extensie.
Construiți aplicația
Construirea aplicației web în acest moment nu este cu mult diferită de construirea oricărei aplicații web folosind Go. Atât timp cât ați efectuat configurația descrisă în secțiunea anterioară, sunteți gata.
Acum trebuie să urmați pașii următori:
- Citiți portul.
- Instanța serverului HTTP.
- Definiți rutele și rutinele de tratare a rutelor.
- Începeți să ascultați portul.
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)