Go er áhugavert forritunarmál til að smíða nútíma vefforrit sem og kerfishugbúnað. Það skapaði mikið suð eftir útgáfu þess og knýr þjónustu eins og Docker, Kubernetes, Terraform, Dropbox og Netflix .
Ennfremur, öflugt safn Go af innbyggðum pakka gerir það að frábæru vali fyrir vefforritun. Þessi grein mun sýna þér hvernig á að skrifa grunn vefþjón í Go.
Flyttu inn nauðsynlega pakka
Net/HTTP pakkinn veitir allt sem þarf til að búa til vefþjón og viðskiptavin. Þessi pakki sýnir nokkrar gagnlegar aðgerðir til að takast á við vefforritun.
Þú getur flutt það inn með því að bæta línunni hér að neðan við upphaf frumkóðans þíns:
import "net/http"
Greinin mun einnig nota fmt pakkann til að forsníða strengi og log pakkann til að meðhöndla villur. Þú getur flutt þá inn fyrir sig eins og sýnt er hér að ofan, eða flutt inn alla pakkana með einni innflutningsyfirlýsingu:
import (
"fmt"
"log"
"net/http"
)
Þú getur haldið áfram að skrifa aðalaðgerðina eftir að þú hefur flutt inn nauðsynlega pakka. Haltu áfram og vistaðu frumskrána með .go endingunni . Ef þú ert að nota Vim , notaðu skipunina hér að neðan til að vista og hætta Vim:
:wq server.go
Skrifaðu aðalaðgerðina
Go forrit eru staðsett beint innan aðalaðgerðarinnar, sem kallast "aðal". Þú þarft að hringja í netþjón hér. Bættu eftirfarandi línum við frumkóðann og sjáðu hvað þær gera:
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Dæmið er að skilgreina aðalaðgerðina með því að nota func lykilorðið . Go hefur strangar reglur um staðsetningu opnunarspelkunnar, svo vertu viss um að upphafsspelkan sé á réttri línu. Fyrsta setningin í main skilgreinir að allar vefbeiðnir að rótarslóðinni ( "/" ) verði meðhöndlaðar af index, fall af gerðinni http.HandlerFunc .
Önnur línan ræsir vefþjóninn í gegnum http.ListenAndServe aðgerðina . Það gefur þjóninum merki um að hlusta stöðugt eftir HTTP beiðnum sem berast á 8080 tengi þjónsins. Önnur færibreytan í þessari aðgerð er nauðsynleg til að loka á forritið til enda.
Þar sem http.ListenAndServe skilar alltaf villu, umlykur dæmið þetta símtal inn í log.Fatal call . Þessi yfirlýsing skráir allar villuboð sem myndast á netþjóninum.
Innleiða vinnsluaðgerðir
Eins og þú sérð kallar aðalaðgerðin á handhafaaðgerðavísitöluna til að meðhöndla beiðnir viðskiptavina. Hins vegar hefur dæmið ekki enn skilgreint þessa virkni fyrir netþjóninn sinn.
Við skulum bæta við nauðsynlegum yfirlýsingum til að gera vísitöluaðgerðina nothæfa:
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
Þessi aðgerð tekur tvær mismunandi röksemdir af gerðinni http.ResponseWriter og http.Request . http.ResponseWriter færibreytan inniheldur svar þjónsins við beiðninni sem berast, í formi http.Request hluts .
Aðgerðin Fprintf úr fmt pakkanum er notuð til að sýna og vinna með textastrengi. Greinin notar þetta til að sýna svar þjónsins við vefbeiðnum. Að lokum er r.URL.Path[1:] þátturinn notaður til að sækja gögn á eftir rótarslóðinni.
Bætið við öllum hlutunum sem eftir eru
Go vefþjónninn þinn verður tilbúinn þegar þú hefur bætt við öllum íhlutunum sem eftir eru. Kóðinn mun líta svona út:
import (
"fmt"
"log"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, welcome to %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", index)
log.Fatal(http.ListenAndServe(":8080", nil))
}
Fyrsta línan er nauðsynleg til að setja saman þennan Go vefþjónskóða sem keyrsluskrá.

Safnaðu þessum Go vefþjónskóða saman sem keyrsluskrá