Web-reititys on tekniikka, jolla määritetään HTTP-pyyntöjä käsittelijöille, jotka toimivat määritetyllä URL-polulla. Reititystä käytetään usein yksisivuisten sovellusten (SPA) ja API: iden rakentamiseen. Reitittimessä koodi määrittää käyttäjän pyyntöön liittyvien toimintojen sarjan.
Go-standardikirjastossa on suurin osa toiminnoista, joita tarvitset verkkosovellusten rakentamiseen, mukaan lukien reititys. Voit käyttää ServeMux kirjoita sisään net/http paketti perusreitinkäsittelyyn. Jos tarvitset monimutkaisempaa reitinkäsittelyä, valittavana on runsaasti reitityspaketteja.
Reitityksen aloittaminen Gossa
Go: n ekosysteemissä on reitityspaketteja, jotka poistavat tarpeettomat ja helpottavat verkkosovellusten ja -palveluiden rakentamista.
Monet Go-verkkokehykset toteuttavat joitain näistä reitityspaketeista.
Tässä on yksinkertainen rakennemalli JSON vastauksen, jonka palaat asiakkaalle tässä opetusohjelmassa.
tyyppi Tiedot struct {
Viesti merkkijono`json:"viesti"`
Kuvaus merkkijono`json:"description"`
}
Useimmat Go-reitittimet käyttävät edelleen net/http-verkkoa ResponseWriter ja Pyyntö menetelmät parametreina käsittelijäfunktioissa.
funcHei(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö) {
// Käsittelijän funktion liiketoimintalogiikka tässä
}
Sinun on myös käynnistettävä palvelin KuunteleJaPalvele tapa käynnistää palvelin useimmissa paketeissa.
virhe := http. ListenAndServe(":8000", reititin)
jos virhe! = nolla {
palata
}
Tässä on joitain Go-ekosysteemin suosittuja reitityspaketteja.
1. Gorilla Mux -reititin
Gorilla Mux -paketti toteuttaa sekä pyyntöreitittimen että pyyntöjen välittäjän HTTP-pyyntöjä varten. Se on kuin http. ServeMux menetelmällä, mutta lisätoiminnoilla.
Gorilla Mux -reititin toteuttaa http. Käsittelijä käyttöliittymä ja sen menetelmät ovat yhteensopivia ServeMux menetelmä. Paketti toteuttaa myös useita URL-malleja, ja voit käyttää reitittimiä alireitittiminä (sisäkkäisinä reiteinä) samanlaisten reittien määrittämiseen.
The Gorilla Mux paketti on osa Gorilla-verkkotyökalupakkia. Työkalupakkaus sisältää verkkoon liittyviä paketteja monien ongelmien ratkaisemiseksi pitää käyttäjät kirjautuneena istuntoihin tietojen tallentamiseen evästeiden avulla.
Suorita tämä komento työtilasi päätteessä asentaaksesi Gorilla Mux -paketin.
mennä get -u github.com/gorilla/mux
Näin voit määrittää a SAADA pyytää reittiä käsittelijätoimintoon, joka koodaa JSON-vastauksen Gorilla Mux -paketilla.
tuonti (
"koodaus/json"
"github.com/gorilla/mux"
"Hirsi"
"net/http"
)funcHei(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö) {
vastaus := Info {
Viesti: "Onnistui",
Kuvaus: "Olet onnistuneesti kirjoittanut asiakkaalle",
}virhe := json. NewEncoder (kirjoittaja). Koodaa (vastaus)
jos virhe! = nolla {
Hirsi. Fatalln (err)
}
}funcpää() {
reititin := mux. Uusi reititin()
reititin. HandleFunc("/hello", hei).Methods("GET")
virhe := http. ListenAndServe(":8000", reititin)
jos virhe! = nolla {
palata
}
}
The Hei Käsittelijätoiminto koodaa rakenteen JSON-muotoon käyttämällä Koodata menetelmä Uusi Encoder struct.
The pää -toiminto määrittää uuden Gorilla Mux -reitittimen esiintymän reititin muuttuja. Sitten se kutsuu HandleFunc menetelmä kartoittaa reitti käsittelijätoimintoon. Voit käyttää menetelmät menetelmä määrittää pyyntötyyppi.
2. Chi-reititin
The Chi reititin on kevyt, nopea, koostettava reititin HTTP-pohjaisten verkkopalvelujen rakentamiseen Gossa. Chi-reititin on yhteensopiva http paketti, eikä reitittimellä ole ulkoisia riippuvuuksia.
Toisin kuin monet reitittimet, Chi tarjoaa kontekstin hallinnan yhteydessä paketti pyyntöjen oikea-aikaista käsittelyä varten.
Asenna Chi-reititin Go-moduuleihisi tällä komennolla.
mennä hanki github.com/mennä-chi/chi
Reititys Gorilla Mux -reitittimen ja Chi-reitittimen kanssa on hyvin samanlaista. Näin voit määrittää vastaavan SAADA pyyntö, joka koodaa structin JSON: iin vastauksena.
tuonti (
"koodaus/json"
"github.com/mennä-chi/chi/v5"
"Hirsi"
"net/http"
)funcpää() {
reititin := chi. Uusi reititin()
reititin. Hanki ("/hei", hei)
virhe := http. ListenAndServe(":8000", reititin)jos virhe! = nolla {
palata
}
}funcHei(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö) {
vastaus := Info {
Viesti: "Onnistui",
Kuvaus: "Olet onnistuneesti kirjoittanut asiakkaalle",
}virhe := json. NewEncoder (kirjoittaja). Koodaa (vastaus)
jos virhe! = nolla {
Hirsi. Fatalln (err)
}
}
The Hei Käsittelijätoiminto on käsittelijätoiminto SAADA pyyntö.
Vuonna pää toiminto, reititin muuttuja on Chi-reitittimen esiintymä. Voit määrittää pyyntömenetelmän menetelmän nimellä; tässä tapauksessa, Saada ottaa reitin ja käsittelijän toiminnon tunnisteen parametreina.
3. HttpRouter-paketti
The HttpRouter paketti on erittäin suorituskykyinen, kevyt multiplekseri. Se tarjoaa enemmän toimintoja kuin ServeMux http-paketin käyttöönotto.
HttpRouter-paketilla on pieni muistitila, korkea suorituskyky ja hyvä skaalautuvuus. Se on yksi vanhimmista ja käytetyimmistä reitittimistä Go-ekosysteemissä, ja se on otettu käyttöön monissa suosittuja Go-kehystä, mukaan lukien Gin-kirjasto.
Tämän komennon suorittaminen työhakemistosi päätteessä asentaa HttpRouter-paketin.
mennä hanki github.com/julienschmidt/httprouter
Reititys HttpRouterilla eroaa hieman Chi- ja Gorilla Mux -reitittimistä.
Näin voit määrittää yksinkertaisen GET-pyynnön HttpRouter-paketilla.
tuonti (
"koodaus/json"
"github.com/julienschmidt/httprouter"
"Hirsi"
"net/http"
)funcpää() {
reititin := httpreititin. Uusi()
reititin. GET("/hei", hei)
virhe := http. ListenAndServe(":8000", reititin)jos virhe! = nolla {
palata
}
}funcHei(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö, _ httprouter. Parametrit) {
vastaus := Info {
Viesti: "Onnistui",
Kuvaus: "Olet onnistuneesti osunut API-päätepisteeseen",
}virhe := json. NewEncoder (kirjoittaja). Koodaa (vastaus)
jos virhe! = nolla {
Hirsi. Fatalln (err)
}
}
HttpRouter-paketin käsittelijätoiminnoissa on oltava Parametrit HTTP-reitittimen menetelmä.
The reititin muuttuja on HttpRouterin esiintymä. Voit määrittää GET-pyynnön kanssa SAADA menetelmä, joka ottaa reitin ja käsittelijän toiminnon tunnisteen.
4. Pat-reititin
Pat on Sinatra-tyylinen HTTP-pyyntömultiplekseri, joka toimii Go: n net/http-paketin kanssa. Pat-reitittimessä ei ole muita toimintoja kuin reititys.
Suorita tämä komento työhakemistossasi asentaaksesi Pat Router
mennä hanki github.com/bmizerany/pat
Pat-reititin toteuttaa samanlaisia toimintoja kuin ServeMux menetelmä.
Näin voit käsitellä pyyntöjen reititystä pat paketti.
tuonti (
"koodaus/json"
"github.com/bmizerany/pat"
"Hirsi"
"net/http"
)funcHei(kirjoittaja http. ResponseWriter, pyydä *http. Pyyntö) {
vastaus := Info {
Viesti: "Onnistui",
Kuvaus: "Olet onnistuneesti osunut päätepisteeseen",
}virhe := json. NewEncoder (kirjoittaja). Koodaa (vastaus)
jos virhe! = nolla {
Hirsi. Fatalln ("err")
}
}funcpää() {
reititin := pat. Uusi() // reitittimen esiintymä
reititin. Get("/hello", http. HandlerFunc (hei))
http. Kahva ("/", reititin)
virhe := http. ListenAndServe(":12345", nolla)
jos virhe! = nolla {
Hirsi. Fatal("ListenAndServe: ", err)
}
}
The Uusi menetelmä palauttaa reitittimen ilmentymän. Sinun on käärittävä käsittelijätoiminto HandlerFunc menetelmä. Voit sitten käyttää Kahva menetelmä määrittää juuripolun ja asentaa reitittimen ilmentymän ennen palvelimen käynnistämistä.
Reitittimen rakentaminen ei ole niin vaikeaa
Kaikki tämän artikkelin reitittimet toteuttavat toimintoja verkko- ja http-paketteista. Voit tutustua ServeMux-menetelmän dokumentaatioon oppiaksesi replikoimaan reitittimen lisätoiminnoilla tarpeidesi mukaan.
Kehykset, kuten Gin ja Fiber, sisältävät reititystoiminnot verkkopaketista tai sen toteuttavista ulkoisista paketeista.