Go: lla on erinomainen kieli yksinkertaisten mutta tehokkaiden verkkopalvelinten ja verkkopalvelujen luomiseen. Se tarjoaa sisäänrakennetun HTTP-paketin, joka sisältää apuohjelmia web-tai tiedostopalvelimen nopeaan luomiseen.
tämän opetusohjelman tavoitteena on luoda WWW-palvelin, joka voi hyväksyä GET-pyynnön ja palvella vastausta. Palvelimella palvelemme staattisia tiedostoja, jotka toimivat tiedostopalvelimina. Me sitten tehdä web-palvelin vastaa viestiin pyyntö tulee lomakkeen toimittamisesta, kuten yhteydenottolomake.,
without further ado, let ’ s explore how to build your first web server with Go.
Setup
tarvitset Go-version 1.11 tai korkeamman seurataksesi tätä opetussuunnitelmaa.
tässä osiossa luomme kaikki tarvittavat tiedostot ja luomme oikean tiedostorakenteen. Sen jälkeen tuomme pakettimme testataksemme, toimiiko setup. Älä huoli — asennus on hyvin yksinkertainen Golang Web server.
luo seuraavat tiedostot ja kansiot alla olevan rakenteen mukaan., Tiedosto server.go
istuu juuri projektin, kuten ei static
kansion, joka sisältää kaksi HTML-tiedostot: index.html
ja form.html
.
- server.go- static/- - index.html- - form.html
Nyt kirjoittaa koodia. Avaa server.go
– tiedosto ja tuo tarvittavat paketit. Käytämme fmt
tulostaa hyödyllisiä tietoja terminaalin ja log
tulosta vakavia virheitä, jos web-palvelin kaatuu.
net/http
on tärkein paketti., Se tarjoaa kaikki toiminnot HTTP-asiakkaan tai palvelimen toteuttamiseen, kuten Golang-verkkopalvelimen.
package mainimport ( "fmt" "log" "net/http")
Lopuksi, katsotaanpa lisätä yksinkertainen main()
toiminto server.go
tiedosto joka tulostaa viestin päätelaitteelle.
func main() { fmt.Printf("Starting server at port 8080\n")}
testaa asetukset, käynnistä fiktiivisessä palvelimen komennolla.
go run server.go
Jos olet seurannut mukana setup, sinun pitäisi nähdä seuraava lähtö oman terminaalin.,
Starting server at port 8080
Jos kaikki näyttää hyvä, seuraava askel on luoda web-palvelin.
NETTIPALVELIMEN käynnistäminen GET-reiteillä
tässä vaiheessa luomme web-palvelimen, joka todella palvelee port 8080: ssa ja voi vastata saapuviin GET-pyyntöihin.
katsotaanpa muokata koodia meidän main()
toiminto aloittaa web-palvelimen portti 8080. ListenAndServe
menetelmä on viemien http
paketti tuodaan aikana, vaihe yksi. Tämän menetelmän avulla voimme aloittaa WWW-palvelimen ja määrittää portin kuunnella saapuvia pyyntöjä.,
huomaa, että porttiparametri on läpäistävä kaksoispisteen avulla prependoituna merkkijonona. Toinen parametri hyväksyy käsittelijän, joka määrittää palvelimen HTTP/2: lle. Tämä ei kuitenkaan ole tärkeää tämän opetusohjelman kannalta, joten voimme turvallisesti ohittaa nil
toisena argumenttina.
func main() { fmt.Printf("Starting server at port 8080\n") if err := http.ListenAndServe(":8080", nil); err != nil { log.Fatal(err) }}
tässä vaiheessa, että palvelin voi aloittaa, mutta se ei silti tiedä, miten käsitellä pyyntöjä. Meidän on siirrettävä käsittelijät palvelimelle, jotta se osaa vastata saapuviin pyyntöihin ja mitä pyyntöjä hyväksyä.,
HandleFunc
– toiminnolla lisätään reittikäsittelijät www-palvelimelle. Ensimmäinen argumentti hyväksyy polun, jota sen pitää kuunnella /hello
. Tässä, kerrot palvelimelle kuunnella mahdolliset saapuvat pyynnöt . Toinen argumentti hyväksyy funktion, jolla on liiketoimintalogiikka vastata pyyntöön oikein.
oletuksena tämä toiminto hyväksyy ResponseWriter
lähettää vastauksen takaisin ja Request
objekti, joka tarjoaa enemmän tietoa pyynnön itse., Voit esimerkiksi tutustua lähetetyistä otsikoista saatuihin tietoihin, joista voi olla hyötyä pyynnön todentamisessa.
Kuten voit nähdä, käsittelijä lähettää "Hello!”
viesti, kun ohitamme tämä vastaus ResponseWriter
.
now let ’ s try out this setup. Käynnistää web-palvelin, jossa go run server.go
käymään . Jos palvelin vastaa
"Hello!"
, voit jatkaa seuraavaan vaiheeseen, jossa voit oppia lisää perus turvallisuus teidän Golang web-palvelin reittejä.,
lisää perusturva reiteille
on sanomattakin selvää, että turvallisuus on tärkeää. Katsotaanpa tutkia joitakin perus strategioita parantaa turvallisuutta Go Web server.
ennen kuin teemme, meidän pitäisi ottaa hetki lisätä koodin luettavuutta. Katsotaanpa luoda helloHandler
toiminto, joka omistaa kaikki logiikkaan liittyvät /hello
pyyntö.
tämä käsittelijä käyttää Request
– objektia tarkistaakseen, onko pyydetty polku oikea. Tämä on hyvin perusesimerkki siitä, miten Request
– objektia voi käyttää.,
Jos polku on virheellinen, palvelin palauttaa StatusNotFound
virhe käyttäjälle. Virheen kirjoittamiseen käyttäjälle voi käyttää http.Error
– menetelmää. Huomaa, että StatusNotFound
koodi vastaa 404-virhe. Kaikki tilakoodit löytyvät Golangin dokumentaatiosta.
seuraavaksi lisätään tarkistus pyynnön tyypin tarkistamiseksi. Jos menetelmä ei vastaa GET
, palvelin palauttaa uuden virheen. Kun molemmat tarkastukset läpäisevät, palvelin palauttaa menestysvasteensa "Hello!"
.,
viimeinen asia, joka meidän täytyy tehdä, on muuttaa handleFunc
toiminto meidän main()
toiminto hyväksyä edellä helloHandler
toiminto.
http.HandleFunc("/hello", helloHandler)
Alla on koko koodi server.go
tiedosto.
seuraavaksi käynnistetään Go-verkkopalvelin go run server.go
. Voit testata oman turvallisuuden lähettämällä POST-pyyntö käyttämällä työkalua, kuten Postinkantaja tai kiharaa.
Aloita staattinen WWW-palvelin
tässä vaiheessa luomme yksinkertaisen tiedostopalvelimen staattisten tiedostojen vastaanottamiseen., Tämä on hyvin yksinkertainen lisäys Web-palvelimeen.
varmista, Että meillä on sisältöä palvelemaan web-palvelin, katsotaanpa muuttaa index.html
tiedosto sijaitsee static
kansio. Pitääksesi asiat yksinkertaisina, lisää tiedostoon otsake, jossa lukee ”Static Website
.”Jos haluat, voit lisätä enemmän tiedostoja tai muotoilutiedostoja, jotta web-palvelin näyttää hieman mukavammalta.
<html> <head> <title>Static Website</title> </head> <body> <h2>Static Website</h2> </body></html>
palvelee static
kansion, sinun täytyy lisätä kaksi riviä koodia server.go
., Koodin ensimmäinen rivi luo tiedostopalvelinobjektin käyttäen FileServer
– funktiota. Tämä funktio hyväksyy polun – tyypissä. Siksi meidän täytyy muuntaa string polku "./static”
to http.Dir
polku tyyppi.
Älä unohda määritellä Handle
reitti, joka hyväksyy polku ja fileserver. Tämä toiminto toimii samalla tavalla kuin HandleFunc
funktio, joitakin pieniä eroja. Katso lisätietoja FileServer
objektista dokumentaatiosta.,
on aika kokeilla koodia. Käynnistä palvelin go run server.go
käymään . Sinun pitäisi nähdä ”
Static Website
” otsikko.
Hyväksy lomakkeen lähetys POST-pyyntö
Lopuksi, web-palvelin on vastata lomakkeen toimittamisesta.
katsotaanpa lisätä joitakin sisältöä form.html
tiedosto static
kansio. Huomaa, että lomakkeen toiminta on lähettänyt /form
. Tämä tarkoittaa, että lomakkeen postipyyntö lähetetään ., Lomakkeen itse pyytää input kaksi muuttujaa:
name
ja address
.
seuraava askel on luoda handler hyväksyä /form
pyyntö. form.html
tiedosto on jo toiminut kautta FileServer ja pääsee
First, the function has to call ParseForm()
jäsentää raaka-kysely ja päivitys r.PostForm
ja r.Form
. Tämä antaa meille mahdollisuuden käyttää name
ja address
arvojen kautta r.FormValue
menetelmä.,
lopussa toiminto, kirjoitamme molemmat arvot ResponseWriter
käyttäen fmt.Fprintf
.
Älä unohda lisätä uusi lomakekäsittelijä reitti main()
toiminto.
http.HandleFunc("/form", formHandler)
Nyt, koko koodi näyttää tältä.
Yrittää lomake handler
– Voimme testata lomakkeen käynnistämällä palvelin go run server.go
. Kun palvelin käynnistyy, käy . Sinun pitäisi nähdä kaksi syöttökenttää ja Lähetä-painike.,
Kun olet täyttänyt lomakkeen, paina submit
– painiketta. Palvelimen pitäisi käsitellä POST-pyynnön ja näyttää tulos vastaus-sivulle, kuten alla vastaus.
Jos näet tuloksen, joka on yli, olet onnistuneesti luonut ensimmäisen Golang web-ja tiedostopalvelin. Onnitteluni!
Jos haluat tutustua Golang web-palvelimet edelleen, Golang HTTP-paketin dokumentaatio on täynnä hyviä esimerkkejä., Tämä opetusohjelma kirjoittaminen web apps Go on toinen suuri resurssi, joka kattaa useimmat perusasiat.
LogRocket: Täysi näkyvyys osaksi web-sovellukset
LogRocket on frontend sovellus seuranta ratkaisu, jonka avulla voit toistaa ongelmia, jos ne tapahtui omassa selain. Sen sijaan arvailla, miksi virheitä tapahtuu, tai pyytää käyttäjiä kuvakaappauksia ja Loki kaatopaikkoja, LogRocket voit toistaa istunnon nopeasti ymmärtää, mikä meni pieleen., Se toimii täydellisesti tahansa sovelluksen, riippumatta siitä, kehys, ja on plugins kirjautua tiedostojen yhteydessä, Redux, Vuex, ja @ngrx/store.
lisäksi hakkuut Redux toimia ja valtion, LogRocket kirjaa konsoli lokit, JavaScript virheitä, stacktraces, verkko pyynnöt/vastaukset otsikot + elinten, selain metatiedot, ja custom lokit. Se myös välineitä DOM tallentaa HTML-ja CSS-sivulla, uudestaan pixel-perfect videoita jopa kaikkein monimutkaisia yhden sivun apps.
kokeile ilmaiseksi.