Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Go on võimas ja paindlik keel veebirakenduste loomiseks. The net pakett mängib Go ökosüsteemis olulist rolli.

Nagu enamik serveripoolseid programmeerimiskeeli, tarnitakse ka Go-ga HTTP-protokolliga suhtlemiseks mõeldud HTTP-paketti. Vastav Go pakett on http pakett, alampakett net pakett.

Mis on net/http pakett?

The net/http pakett on üks Go standardteeke. See pakub täielikku komplekti funktsioone ja tüüpe HTTP-klientide, serverite ja muude HTTP-põhiste toimingute loomiseks. Need sisaldavad:

  • Funktsioonid HTTP päringute tegemiseks.
  • Taotluste ja vastuste käsitlemine.
  • HTTP päringute teenindamine.
  • Seotud objektid, nagu päised ja küpsised.

The net/http pakett toetab ka TLS/SSL-krüptimist, HTTP/2 ja muid täiustatud funktsioone, muutes paketi Go arendajatele oluliseks tööriistaks.

Paljud populaarsed Go teegid ja raamistikud, alates Gorilla veebitööriistakomplektist ja lõpetades veebiraamistikuga Echo, põhinevad net/http pakett.

Lihtsa HTTP-serveri käivitamine

Serverite käivitamine on üks peamisi toiminguid, mida peate HTTP-protokolliga töötamiseks mõistma.

Siin on programm käitage Go's lihtsat serverit:

pakett peamine

importida (
"fmt"
"net/http"
)

// töötleja on Go tüüpiline HTTP päringu-vastuse töötleja; üksikasjad hiljem
funckäitleja(w http. ResponseWriter, r *http. taotlus) {
// Fprintf vormindab stringi kirjutajaks
fmt. Fprintf (w, "Tere, Maailm!")
}

funcpeamine() {
http. HandleFunc("/", töötleja)
http. ListenAndServe(":8080", null)
}

The käitleja funktsioon on tüüpiline päringu-vastuse töötleja http pakett. See funktsioon kirjutab stringi "Tere, maailm!" HTTP vastuse kirjutajale.

Koodi käivitamisel ja külastamisel http://localhost: 8080/ veebibrauseris peaksite nägema "Tere, maailm!" teie brauseris kuvatav string.

Taotluste ja vastuste käsitlemine

Sissetulevaid päringuid saate käsitleda rakendusega HandleFunc meetod http pakett. The HandleFunc meetod võtab marsruudistringi ja käitleja funktsiooni.

The http. Taotlus meetod on sissetuleva päringu eksemplar ja saate marsruudi päringutega suhtlemiseks kasutada oma eksemplari arvukaid meetodeid.

http. HandleFunc("/kasutajad", func(w http. ResponseWriter, r *http. taotlus) {
lüliti r. meetod {
juhtum"HANGI":
// GET-i päringu käsitlemine
juhtum"POSTITA":
// käsitleb POST-i päringut
vaikimisi:
http. Viga (w, "Vigane päringumeetod", http. OlekumeetodPole lubatud)
}
})

Ülaltoodud kood kasutab http pakett HTTP-käsitleja funktsiooni määratlemiseks /users tee. Käsitleja funktsioon kuulab marsruudil sissetulevaid HTTP-päringuid ja töötleb neid päringumeetodi alusel (nt SAADA, POSTITA, jne.)

Käitleja funktsioon võtab ResponseWriter ja Taotlus meetodid argumentidena. The ResponseWriter on liides, mis aitab töötlejal kirjutada andmeid vastusena kliendile ja Taotlus on struktuur, mis sisaldab teavet sissetuleva päringu kohta, nagu HTTP-meetod, URL, päised jne.

Ülaltoodud käitlejafunktsioon kasutab a lüliti avaldus päringumeetodi määramiseks ja meetodi alusel erinevate koodiplokkide käivitamiseks. Kui meetod on SAADA, tegeleb käitleja SAADA nõuda. Vastasel juhul on meetod POSTITUS; see saab hakkama POSTITA nõuda.

Kui meetod on midagi muud, saadab see an http. Viga sõnumiga "Vigane päringumeetod" ja a OlekMeetodPole lubatudHTTP olekukood kliendile.

Saate stringe kliendile tagasi kirjutada, kasutades Kirjutage teie kirjutaja eksemplari meetod, mis võtab stringidest baidise osa ja kirjutab stringi.

w. Kirjuta ([]bait("Tere, Maailm!"))

Võite kasutada WriteHeader teie meetod ResponseWriter näiteks kliendile päiste kirjutamiseks.

w. WriteHeader (http. Olek OK)

HTTP-vahevaraga töötamine

Vahevara koosneb funktsioonidest, mis peatavad sissetulevad HTTP-päringud toimingute jaoks, enne kui päring liigub järgmise töötleja funktsiooni juurde.

Siin on näide vahevara töötleja funktsiooni logimisest Go's:

funclogimine Vahevara(järgmine http. Käitleja)http.Käitleja {
tagasi http. HandlerFunc(func(w http. ResponseWriter, r *http. taotlus) {
// logige päring
järgmiseks. Esita HTTP(w, r)
// logi vastus
})
}

The logimine Vahevara funktsioon võtab sisse HTTP-käsitleja ja tagastab uue HTTP-käsitleja. Tagastatud HTTP-käsitleja on anonüümne funktsioon, mis võtab vastu HTTP-vastuse kirjutaja ja HTTP-päringu. Funktsioon logib päringu ja kutsub välja ServeHTTP meetodil järgmiseks HTTP-käsitleja, vastuse kirjutaja ja päringu edastamine argumentidena.

Vahevara funktsioone saate hallata rakendusega Käepide meetod http pakett. The Käepide meetod võtab marsruudi ja vahevara funktsiooni.

http. Handle("/", logimineKeskvara (http. HandlerFunc (käitleja)))

Ümbersuunamised HTTP-paketiga

Ümbersuunamine on populaarne toiming veebirakenduste jaoks, mis suunavad kasutajad teistele ressurssidele või veebilehtedele.

Saate suunata ümber teisele veebilehele, kasutades Ümbersuunamine meetod http pakett.

http. Ümbersuunamine (w, r, " http://example.com", http. OlekPüsivalt liigutatud)

The Ümbersuunamine meetod hõlmab ResponseWriter ja Taotlus eksemplare, uue lehe URL ja ümbersuunamise olekukood.

Saate Go's luua keerulisi API-sid

The http pakett on võimas ja paindlik tööriist keerukate API-de loomiseks. Saate kasutada Go rikkalikku standardraamatukogu ja muid võimsaid kolmanda osapoole paketid, et lisada oma API-dele funktsioone, nagu andmebaasi ühenduvus ja erinevate veebide tugi raamistikud.

Go abil saate luua skaleeritavaid ja suure jõudlusega API-sid, mis käsitlevad hõlpsalt olulist päringuliiklust ja keerukaid andmetöötlusülesandeid.