Ievads Go HTTP pakotnē

Ievads Go HTTP pakotnē
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

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?

  http pakotnes pārskats

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 :





kā iegūt tirdzniecības kartes Steam
 package main 

import (
    "fmt"
    "net/http"
)

// handler is a typical HTTP request-response handler in Go; details later
func handler(w http.ResponseWriter, r *http.Request) {
    // Fprintf formats the string to a writer
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

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ā.





  servera palaišanas rezultāts

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ījums 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("/users", func(w http.ResponseWriter, r *http.Request) { 
    switch r.Method {
    case "GET":
        // handle GET request
    case "POST":
        // handle POST request
    default:
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
    }
})

Iepriekš minētais kods izmanto http pakotni, lai definētu HTTP apdarinātāja funkciju /lietotāji 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ĪT utt.)

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 StatusMethodNotAllowed HTTP 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.Write([]byte("Hello, World!")) 

Jūs varat izmantot WriteHeader jūsu metode ResponseWriter piemēram, lai klientam rakstītu galvenes.

 w.WriteHeader(http.StatusOK) 

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:

 func loggingMiddleware(next http.Handler) http.Handler { 
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // log the request
        next.ServeHTTP(w, r)
        // log the response
    })
}

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.Handle("/", loggingMiddleware(http.HandlerFunc(handler))) 

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.Redirect(w, r, "http://example.com", http.StatusMovedPermanently) 

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 trešo pušu pakotnes, lai pievienotu API funkcionalitāti, piemēram, datu bāzes savienojamību un dažādu tīmekļa ietvaru atbalstu.

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.