Go ir jaudīga un elastīga valoda tīmekļa lietojumprogrammu izveidei. The tīkls pakotnei ir būtiska loma Go ekosistēmā.
Tāpat kā lielākā daļa servera puses programmēšanas valodu, Go tiek piegādāts kopā ar HTTP pakotni mijiedarbībai ar HTTP protokolu. Attiecīgā Go pakete ir http pakete, apakšpakete tīkls iepakojums.
Kas ir tīkla/http pakotne?
The net/http pakotne ir viena no Go standarta bibliotēkām. Tas nodrošina pilnu funkciju un veidu komplektu HTTP klientu, serveru un citu uz HTTP balstītu darbību izveidei. Tie ietver:
- Funkcijas HTTP pieprasījumu veikšanai.
- Pieprasījumu un atbilžu apstrāde.
- HTTP pieprasījumu apkalpošana.
- Saistīti objekti, piemēram, galvenes un sīkfaili.
The net/http pakotne atbalsta arī TLS/SSL šifrēšanu, HTTP/2 un citas uzlabotas funkcijas, padarot paketi par būtisku rīku Go izstrādātājiem.
Daudzas populāras Go bibliotēkas un ietvari, sākot no Gorilla tīmekļa rīkkopas un beidzot ar tīmekļa ietvaru Echo, ir balstīti uz
net/http iepakojums.Vienkārša HTTP servera palaišana
Serveru palaišana ir viena no pamata darbībām, kas jums ir jāsaprot, lai strādātu ar HTTP protokolu.
Šeit ir programma palaist vienkāršu serveri programmā Go:
iepakojums galvenais
imports (
"fmt"
"net/http"
)// apdarinātājs ir tipisks HTTP pieprasījuma-atbildes apstrādātājs programmā Go; sīkāku informāciju vēlāk
funcapdarinātājs(w http. ResponseWriter, r *http. Pieprasīt) {
// Fprintf formatē virkni rakstītājam
fmt. Fprintf (w, "Sveika pasaule!")
}
funcgalvenais() {
http. HandleFunc("/", apdarinātājs)
http. ListenAndServe(":8080", nulle)
}
The apdarinātājs funkcija ir tipisks pieprasījumu-atbilžu apstrādātājs http iepakojums. Šī funkcija ieraksta virkni "Sveika, pasaule!" HTTP atbildes rakstītājam.
Par koda palaišanu un apmeklējumu http://localhost: 8080/ tīmekļa pārlūkprogrammā jums vajadzētu redzēt "Sveika, pasaule!" virkne, kas tiek parādīta jūsu pārlūkprogrammā.
Pieprasījumu un atbilžu apstrāde
Ienākošos pieprasījumus varat apstrādāt, izmantojot HandleFunc metode http iepakojums. The HandleFunc metode izmanto maršruta virkni un apstrādātāja funkciju.
The http. Pieprasīt metode ir ienākošā pieprasījuma gadījums, un jūs varat izmantot daudzas savas instances metodes, lai mijiedarbotos ar maršruta pieprasījumiem.
http. HandleFunc("/lietotāji", func(w http. ResponseWriter, r *http. Pieprasīt) {
slēdzis r. Metode {
lietu"GŪT":
// apstrādājiet GET pieprasījumu
lietu"POSTĪT":
// apstrādājiet POST pieprasījumu
noklusējuma:
http. Kļūda (w, "Nederīga pieprasījuma metode", http. Statusa metodeNav atļauts)
}
})
Iepriekš minētais kods izmanto http pakotni, lai definētu HTTP apdarinātāja funkciju /users maršruts. Apdarinātāja funkcija noklausās ienākošos HTTP pieprasījumus maršrutā un apstrādā tos, pamatojoties uz pieprasījuma metodi (piemēram, GŪT, POSTĪTutt.)
Apdarinātāja funkcija aizņem ResponseWriter un Pieprasīt metodes kā argumenti. The ResponseWriter ir saskarne, kas palīdz apstrādātājam rakstīt datus kā atbildi klientam, un Pieprasīt ir struktūra, kas satur informāciju par ienākošo pieprasījumu, piemēram, HTTP metodi, URL, galvenes utt.
Iepriekš minētā apstrādātāja funkcija izmanto a slēdzis paziņojumu, lai noteiktu pieprasījuma metodi un palaistu dažādus kodu blokus, pamatojoties uz šo metodi. Ja metode ir GŪT, apdarinātājs apstrādās GŪT pieprasījumu. Pretējā gadījumā metode ir POST; tas tiks galā ar POSTĪT pieprasījumu.
Ja metode ir kaut kas cits, tā nosūtīs http. Kļūda ar ziņojumu "Nederīga pieprasījuma metode" un a StatusMethodNotAllowedHTTP statusa kods klientam.
Jūs varat ierakstīt atpakaļ virknes klientam, izmantojot Rakstiet jūsu rakstītāja instances metode, kas ņem virknes baitu daļu un ieraksta virkni.
w. Rakstīt ([]baits("Sveika pasaule!"))
Jūs varat izmantot WriteHeader jūsu metode ResponseWriter piemēram, lai klientam rakstītu galvenes.
w. WriteHeader (http. Statuss OK)
Darbs ar HTTP starpprogrammatūru
Starpprogrammatūra sastāv no funkcijām, kas pārtver ienākošos HTTP pieprasījumus operācijām, pirms pieprasījums pāriet uz nākamo apstrādātāja funkciju.
Šeit ir piemērs starpprogrammatūras apdarinātāja funkcijas reģistrēšanai pakalpojumā Go:
funcreģistrēšana Vidusprogrammatūra(nākamā http. Apdarinātājs)http.Apdarinātājs {
atgriezties http. HandlerFunc(func(w http. ResponseWriter, r *http. Pieprasīt) {
// reģistrēt pieprasījumu
Nākamais. Pakalpot HTTP(w, r)
// piereģistrējiet atbildi
})
}
The reģistrēšana Vidusprogrammatūra funkcija uzņem HTTP apdarinātāju un atgriež jaunu HTTP apdarinātāju. Atgrieztais HTTP apdarinātājs ir anonīma funkcija, kas uzņem HTTP atbildes rakstītāju un HTTP pieprasījumu. Funkcija reģistrē pieprasījumu un izsauc ServeHTTP metode uz Nākamais HTTP apdarinātājs, nododot atbildes rakstītāju un pieprasījumu kā argumentus.
Varat apstrādāt starpprogrammatūras funkcijas, izmantojot Rokturis metode http iepakojums. The Rokturis metode izmanto maršrutu un starpprogrammatūras funkciju.
http. Rokturis("/", logging Vidusprogrammatūra (http. HandlerFunc (apdarinātājs)))
Novirza ar HTTP pakotni
Novirzīšana ir populāra darbība tīmekļa lietojumprogrammām, kas novirza lietotājus uz citiem resursiem vai tīmekļa lapām.
Varat novirzīt uz citu tīmekļa lapu, izmantojot Novirzīt metode http iepakojums.
http. Novirzīt (w, r, " http://example.com", http. StatussMovedPermanently)
The Novirzīt metode ņem vērā ResponseWriter un Pieprasīt gadījumiem, jaunās lapas URL un statusa kodu novirzīšanai.
Go varat izveidot sarežģītas API
The http pakotne ir spēcīgs un elastīgs rīks sarežģītu API veidošanai. Varat izmantot Go bagātīgo standarta bibliotēku un citas jaudīgas iespējas trešās puses pakotnes, lai pievienotu funkcionalitāti jūsu API, piemēram, datu bāzes savienojamību un dažādu tīmekļa atbalstu ietvarus.
Izmantojot Go, varat izveidot mērogojamus, augstas veiktspējas API, kas viegli apstrādā nozīmīgu pieprasījumu trafiku un sarežģītus datu apstrādes uzdevumus.