Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

URL: er (Uniform Resource Locators) är en av internets mest kritiska delar av infrastrukturen. När du bygger webbapplikationer måste du manipulera webbadresser för att hitta och hämta resurser.

När du bygger mer sofistikerade webbappar måste du arbeta med webbadresser på en mer detaljerad nivå. Du kan behöva identifiera schemat, värdnamnet, sökvägen och frågeparametrarna. Du måste också veta hur du kodar och avkodar webbadresser så att du kan hantera specialtecken och hålla din webbapplikation säker.

Gos standardbibliotek tillhandahåller net/url-paketet för att hantera webbadresser och URL-komponenter.

URL-paketet

De url paketet innehåller omfattande funktioner och funktioner för att arbeta med URL: er och deras separata delar. Det tillhandahåller funktioner för att analysera, konstruera, koda och avkoda webbadresser, vilket gör paketet användbart för webbutveckling.

instagram viewer

Några av de viktigaste funktionerna i url paket är möjligheten att tolka URL: er till individuella komponenter för manipulering och URL-konstruktion för HTTP-förfrågningar. De url paketet ger också en URL struktur med a Analysera metod för att analysera strängar till webbadresser.

Här är url. URL strukturmodell:

paket huvud

typ URL struktur {
// Schema är protokollschemat för URL: en,
// som "http" eller "https"
Schema sträng

// Opaque används för att hålla alla ogenomskinliga data
// som ska kodas i URL: en
Ogenomskinlig sträng

// Användaren har information om användaren som gör begäran,
// som ett användarnamn och lösenord
Användare *Användarinfo

// Värd är värdnamnet eller IP-adressen
// av servern som är värd för URL: en
Värd sträng

// Sökväg är sökvägen till URL: en på servern
Väg sträng

// RawPath är originalet,
// kodad sökväg för URL: en
RawPath sträng

// ForceQuery anger om URL: en ska innehålla en frågesträng
// även om den är tom
ForceQuery bool

// RawQuery är originalet,
//kodad frågesträng för URL: en
RawQuery sträng

// Fragment är fragmentidentifieraren för webbadressen,
// används för att länka till ett specifikt element på en sida
Fragment sträng

// RawFragment är originalet,
// kodad fragmentidentifierare för URL: en
RawFragment sträng
}

Att veta hur man kommer åt olika delar av URL struct kan vara användbar för uppgifter som validering.

Analysera webbadresser med hjälp av parsefunktionen

De Analysera funktion av url paketet tillhandahåller funktionen för att analysera URL-strängar till individuella komponenter. De Analysera funktionen tar en enda URL som ett argument och returnerar en pekare till url. URL struct som innehåller de analyserade data för URL: en och en feltyp.

Så här kan du använda Analysera funktion för att hämta elementen i en URL.

importera (
"fmt"
"net/url"
)

funchuvud() {
// URL: en du vill analysera
exempelwebbadress := " https://www.example.com/path? param1=värde1&param2=värde2"

// Analysera URL: en
parsedURL, err := url. Analysera (exempelwebbadress)

om fel!= noll {
fmt. Println (fel)
lämna tillbaka
}

// Skriv ut alla fält i URL: en
fmt. Println("Schema:", parsedURL.Scheme)
fmt. Println("Ogenomskinlig:", parsedURL.Opaque)
fmt. Println("Användare:", parsedURL.User)
fmt. Println("Värd:", parsedURL.Host)
fmt. Println("Väg:", parsedURL.Path)
fmt. Println("RawPath:", parsedURL.RawPath)
fmt. Println("ForceQuery:", parsedURL.ForceQuery)
fmt. Println("RawQuery:", parsedURL.RawQuery)
fmt. Println("Fragment:", parsedURL.Fragment)
fmt. Println("RawFragment:", parsedURL.RawFragment)
}

De exempelwebbadress variabeln innehåller den fullständiga, oparsade URL: en och Analysera funktion analyserar innehållet i exempelwebbadress variabel och returnerar den analyserade URL: en. Programmet avslutas med en rad samtal till Println för att visa de individuella områdena URL struktur.

Parsefunktionen kontrollerar inte om en URL är en riktig som faktiskt existerar, den analyserar bara URL: en syntaktisk. Du kan använda http paket för att göra en GET-förfrågan till URL: en och kontrollera svaret:

importera (
"fmt"
"net/http"
)

funchuvud() {
// URL: en du vill kontrollera
exempelwebbadress := " https://www.example.com"

// Gör en HTTP GET-begäran till URL: en
svar, fel := http. Hämta (exempelwebbadress)

om fel!= noll {
fmt. Println (fel)
lämna tillbaka
}

uppskjuta svar. Kropp. Stänga()

// Kontrollera svarsstatuskoden
om svar. Statuskod == http. StatusOK {
fmt. Println("URL finns.")
} annan {
fmt. Println("URL finns inte.")
}
}

De huvud funktion gör en SKAFFA SIG begäran till exempelwebbadress använda Skaffa sig funktion av http paket. Den funktionen returnerar en svarsinstans och feltyp. Programmet avslutas med en om uttalande för att validera webbplatsens existens genom att kontrollera HTTP-statuskod mot StatusOk konstant från http paket.

Detta tillvägagångssätt låter dig vidta åtgärder baserat på resultatet av kontrollen, som att omdirigera användaren till en annan sida, visar ett felmeddelande eller försöker igen förfrågan efter en viss period.

Kodning och avkodning av URL-parametrar

De url paketet ger Koda metod för att koda URL-parametrar. De Koda funktion procentkodar specialtecken och mellanslag i URL-parametrar.

importera (
"fmt"
"net/url"
)

funchuvud() {
// skapa en ny url. Värdestruktur
params := url. Värden{}

// lägg till värden till strukturen
params. Lägg till("namn", "John Smith")
params. Lägg till("ålder", "30")
params. Lägg till("kön", "manlig")

// koda strukturen till en sträng
encodedParams := params. Koda()
fmt. Println (encodedParams)

// Utdata: "age=30&gender=male&name=John+Smith"
}

De huvud funktionen skapar en ny Värderingar struct instans av url paketet och Lägg till metod för struct-instansen lägger till nyckel-värde-par av data till struct-instansen.

De Koda metoden konverterar nyckel-värdeparet till URL-strängformatet "nyckel1=värde1&nyckel2=värde2&nyckel3=värde3".

Du kan avkoda en kodad URL-sträng med ParseQuery funktion av url paket.

importera (
"fmt"
"net/url"
)

funchuvud() {
// kodad sträng med URL-parametrar
encodedParams := "age=30&gender=man&name=John+Smith"

// analysera den kodade strängen till en url. Värdestruktur
params, err := url. ParseQuery (encodedParams)

om fel!= noll {
fmt. Println (fel)
}

// skriv ut strukturen
fmt. Println (params)

// Utdata: karta[ålder:[30] kön:[man] namn:[John Smith]]
}

De kodadParameter variabel är en kodad URL-sträng. De ParseQuery funktionen tar in kodadParameter variabel och returnerar den avkodade URL-strängen och ett fel.

Dessa Go-paket kan ta ditt webbroutingspel till nästa nivå

Webbadresserna du använder för sidorna i din webbapplikation bidrar till dess prestanda och synlighet på sökmotorer. Webbrouting är processen att dirigera inkommande förfrågningar till lämplig hanterarfunktion baserat på URL: en.

Du kan dirigera med hjälp av http-paketet eller populära tredjepartspaket som Gorilla Mux, Chi, Pat eller Httprouter. Dessa paket gör routing enklare än http-paketet genom att abstrahera bort en del av dess komplexitet.