URL-osoitteet (Uniform Resource Locators) ovat yksi Internetin kriittisimmistä infrastruktuurin osista. Kun luot verkkosovelluksia, sinun on manipuloitava URL-osoitteita resurssien paikallistamiseksi ja hakemiseksi.
Kun rakennat kehittyneempiä verkkosovelluksia, sinun on työskenneltävä URL-osoitteiden kanssa tarkemmalla tasolla. Sinun on ehkä tunnistettava malli, isäntänimi, polku ja kyselyparametrit. Sinun on myös osattava koodata ja purkaa URL-osoitteita, jotta voit käsitellä erikoismerkkejä ja pitää verkkosovelluksesi turvassa.
Go: n vakiokirjasto tarjoaa net/url-paketin URL-osoitteiden ja URL-osien käsittelemiseen.
URL-paketti
The url paketti tarjoaa kattavat toiminnot ja ominaisuudet työskentelyyn URL-osoitteet ja niiden erilliset osat. Se tarjoaa toimintoja URL-osoitteiden jäsentämiseen, rakentamiseen, koodaamiseen ja purkamiseen, mikä tekee paketista hyödyllisen verkkokehityksessä.
Jotkut tärkeimmistä ominaisuuksista url paketti on kyky jäsentää URL-osoitteita yksittäisiksi komponenteiksi manipulointia ja URL-osoitteiden rakentamista varten HTTP-pyyntöjä varten. The url paketti sisältää myös a URL-osoite rakenna a Jäsentää menetelmä merkkijonojen jäsentämiseksi URL-osoitteiksi.
Tässä on url. URL-osoite rakennemalli:
paketti pää
tyyppi URL-osoite struct {
// Scheme on URL-osoitteen protokollamalli,
// kuten "http" tai "https"
Kaavio merkkijono// Opaquea käytetään kaiken läpinäkymättömän tiedon säilyttämiseen
// jonka pitäisi olla koodattu URL-osoitteeseen
Läpinäkymätön merkkijono// Käyttäjällä on tietoja pyynnön esittäneestä käyttäjästä,
// kuten käyttäjätunnus ja salasana
Käyttäjä *Käyttäjätiedot// Isäntä on isäntänimi tai IP-osoite
// URL-osoitetta isännöivästä palvelimesta
Isäntä merkkijono// Polku on palvelimen URL-osoitteen polku
Polku merkkijono// RawPath on alkuperäinen,
// URL-osoitteen koodattu polku
RawPath merkkijono// ForceQuery osoittaa, pitäisikö URL-osoitteen sisältää kyselymerkkijono
// vaikka se olisi tyhjä
ForceQuery bool// RawQuery on alkuperäinen,
//URL-osoitteen koodattu kyselymerkkijono
RawQuery merkkijono// Fragmentti on URL-osoitteen fragmentin tunniste,
// käytetään linkittämiseen tiettyyn sivun elementtiin
Kappale merkkijono
// RawFragment on alkuperäinen,
// URL-osoitteen koodattu fragmenttitunnus
Raakafragmentti merkkijono
}
Tietää, miten pääset käsiksi eri osiin URL-osoite struct voi olla hyödyllinen tehtävissä, kuten validoinnissa.
URL-osoitteiden jäsentäminen jäsennystoiminnolla
The Jäsentää toiminto url paketti tarjoaa toiminnot URL-merkkijonojen jäsentämiseen yksittäisiksi komponenteiksi. The Jäsentää -funktio ottaa yhden URL-osoitteen argumenttina ja palauttaa osoittimen url. URL-osoite struct, joka sisältää URL-osoitteen jäsennetyt tiedot ja virhetyypin.
Näin voit käyttää Jäsentää toiminto hakea URL-osoitteen elementit.
tuonti (
"fmt"
"net/url"
)funcpää() {
// URL-osoite, jonka haluat jäsentää
esimerkkiURL := " https://www.example.com/path? param1=arvo1¶m2=arvo2"// Jäsennä URL-osoite
parsedURL, err := url. Jäsennys (esimerkkiURL)jos virhe! = nolla {
fmt. Println (err)
palata
}
// Tulosta kaikki URL-osoitteen kentät
fmt. Println("Kaava:", jäsennettyURL.Scheme)
fmt. Println("Läpinäkymätön:", jäsennettyURL.Opaque)
fmt. Println("Käyttäjä:", jäsennettyURL.Käyttäjä)
fmt. Println("isäntä:", jäsennettyURL.Host)
fmt. Println("Polku:", jäsennettyURL.Path)
fmt. Println("Raakapolku:", jäsennettyURL.RawPath)
fmt. Println("ForceQuery:", parsedURL.ForceQuery)
fmt. Println("RawQuery:", parsedURL.RawQuery)
fmt. Println("Kappale:", jäsennettyURL.Fragment)
fmt. Println("Raakafragmentti:", jäsennettyURL.RawFragment)
}
The esimerkkiURL-osoite muuttuja sisältää koko, jäsentämättömän URL-osoitteen ja Jäsentää funktio jäsentää sisällön esimerkkiURL-osoite muuttuja ja palauttaa jäsennetyn URL-osoitteen. Ohjelma päättyy soittosarjaan Println havainnollistaa yksittäisiä kenttiä URL-osoite struct.
Jäsennystoiminto ei tarkista, onko URL todellinen olemassa oleva URL-osoite, se vain jäsentää URL-osoitteen syntaktisesti. Voit käyttää http paketti tehdä GET-pyyntö URL-osoitteeseen ja tarkistaa vastaus:
tuonti (
"fmt"
"net/http"
)funcpää() {
// URL-osoite, jonka haluat tarkistaa
esimerkkiURL := " https://www.example.com"// Tee HTTP GET -pyyntö URL-osoitteeseen
vastaus, virhe := http. Hanki (esimerkkiURL)jos virhe! = nolla {
fmt. Println (err)
palata
}
lykätä vastaus. Runko. Kiinni()
// Tarkista vastauksen tilakoodi
jos vastaus. Tilakoodi == http. TilaOK {
fmt. Println("URL-osoite on olemassa.")
} muu {
fmt. Println("URL-osoitetta ei ole olemassa.")
}
}
The pää funktio tekee a SAADA pyytää esimerkkiURL-osoite käyttämällä Saada toiminto http paketti. Tämä funktio palauttaa vastausesiintymän ja virhetyypin. Ohjelma päättyy an jos lausunto vahvistaaksesi verkkosivuston olemassaolon tarkistamalla HTTP-tilakoodi vastaan TilaOk vakio alkaen http paketti.
Tämän lähestymistavan avulla voit ryhtyä toimiin tarkistuksen tuloksen perusteella, kuten ohjata uudelleen käyttäjä toiselle sivulle, näyttää virheilmoituksen tai yrittää pyyntöä uudelleen tietyn jälkeen ajanjaksoa.
URL-parametrien koodaus ja dekoodaus
The url paketti tarjoaa Koodata URL-parametrien koodausmenetelmä. The Koodata funktio prosentteina koodaa erikoismerkit ja välilyönnit URL-parametreihin.
tuonti (
"fmt"
"net/url"
)funcpää() {
// luo uusi URL-osoite. Arvorakenne
parametrit := url. Arvot{}// lisää arvoja rakenteeseen
parametrit. Lisätä("nimi", "John Smith")
parametrit. Lisätä("ikä", "30")
parametrit. Lisätä("sukupuoli", "Uros")// koodaa rakenteen merkkijonoksi
encodedParams := params. Koodaa ()
fmt. Println (encodedParams)
// Tulos: "age=30&gender=male&name=John+Smith"
}
The pää toiminto luo uuden Arvot struct-esiintymä url paketti ja Lisätä struct-ilmentymän menetelmä lisää avain-arvo-datapareja struct-ilmentymään.
The Koodata -menetelmä muuntaa avain-arvo-parin URL-merkkijonomuotoon "avain1=arvo1&avain2=arvo2&avain3=arvo3".
Voit purkaa koodatun URL-merkkijonon ParseQuery toiminto url paketti.
tuonti (
"fmt"
"net/url"
)funcpää() {
// URL-parametrien koodattu merkkijono
encodedParams := "age=30&gender=mies&name=John+Smith"
// jäsentää koodatun merkkijonon URL-osoitteeksi. Arvorakenne
params, err := url. ParseQuery (encodedParams)
jos virhe! = nolla {
fmt. Println (err)
}
// tulostaa rakenne
fmt. Println (parametrit)
// Tulos: kartta[ikä:[30] sukupuoli:[mies] nimi:[John Smith]]
}
The koodattu parametri muuttuja on koodattu URL-merkkijono. The ParseQuery toiminto ottaa sisään koodattu parametri muuttuja ja palauttaa dekoodatun URL-merkkijonon ja virheen.
Nämä Go-paketit voivat viedä verkkoreitityspelisi uudelle tasolle
Verkkosovelluksesi sivuilla käyttämäsi URL-osoitteet parantavat sen suorituskykyä ja näkyvyyttä hakukoneissa. Web-reititys on prosessi, jossa saapuvat pyynnöt ohjataan sopivaan käsittelijätoimintoon URL-osoitteen perusteella.
Voit reitittää käyttämällä http-pakettia tai suosittuja kolmannen osapuolen paketteja, kuten Gorilla Mux, Chi, Pat tai Httprouter. Nämä paketit tekevät reitityksestä helpompaa kuin http-paketti poistamalla osan sen monimutkaisuudesta.