Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

URL's (Uniform Resource Locators) zijn een van de meest kritieke onderdelen van de internetinfrastructuur. Terwijl u webapplicaties bouwt, moet u URL's manipuleren om bronnen te lokaliseren en op te halen.

Wanneer u meer geavanceerde web-apps bouwt, moet u op een fijnmaziger niveau met URL's werken. Mogelijk moet u het schema, de hostnaam, het pad en de queryparameters identificeren. U moet ook weten hoe u URL's moet coderen en decoderen, zodat u met speciale tekens kunt omgaan en uw webtoepassing veilig kunt houden.

De standaardbibliotheek van Go biedt het net/url-pakket om URL's en URL-componenten te verwerken.

Het URL-pakket

De url pakket biedt uitgebreide functies en mogelijkheden om mee te werken URL's en hun afzonderlijke onderdelen. Het biedt functies voor het ontleden, construeren, coderen en decoderen van URL's, waardoor het pakket nuttig is voor webontwikkeling.

instagram viewer

Enkele van de belangrijkste kenmerken van de url pakket zijn de mogelijkheid om URL's te ontleden in afzonderlijke componenten voor manipulatie en URL-constructie voor HTTP-verzoeken. De url pakket biedt ook een URL structureren met een Ontleed methode voor het ontleden van tekenreeksen in URL's.

Hier is de url. URL struct-model:

pakket voornaamst

type URL structuur {
// Schema is het protocolschema van de URL,
// zoals "http" of "https"
Schema snaar

// Opaque wordt gebruikt om ondoorzichtige gegevens vast te houden
// dat moet worden gecodeerd in de URL
Ondoorzichtig snaar

// Gebruiker heeft informatie over de gebruiker die het verzoek doet,
// zoals een gebruikersnaam en wachtwoord
Gebruiker *Gebruikersinfo

// Host is de hostnaam of het IP-adres
// van de server die de URL host
Gastheer snaar

// Pad is het pad van de URL op de server
Pad snaar

// RawPath is het origineel,
// gecodeerd pad van de URL
RawPath snaar

// ForceQuery geeft aan of de URL een queryreeks moet bevatten
// zelfs als het leeg is
ForceQuery boel

// RawQuery is het origineel,
// gecodeerde queryreeks van de URL
RawQuery snaar

// Fragment is de fragment-ID van de URL,
// gebruikt om naar een specifiek element op een pagina te linken
Fragment snaar

// RawFragment is het origineel,
// gecodeerde fragment-ID van de URL
RawFragment snaar
}

Weten hoe u toegang krijgt tot verschillende delen van het URL struct kan nuttig zijn voor taken zoals validatie.

URL's parseren met behulp van de parseerfunctie

De Ontleed functie van de url pakket biedt de functionaliteit voor het ontleden van URL-tekenreeksen in individuele componenten. De Ontleed functie neemt een enkele URL als argument en retourneert een aanwijzer naar de url. URL struct met de geparseerde gegevens van de URL en een fouttype.

Hier ziet u hoe u de Ontleed functie om de elementen van een URL op te halen.

importeren (
"fmt"
"net/url"
)

funcvoornaamst() {
// De URL die u wilt ontleden
voorbeeldURL := " https://www.example.com/path? param1=waarde1&param2=waarde2"

// Parseer de URL
parsedURL, fout := url. Parseren (voorbeeldURL)

als fout!= nihil {
fmt. Println (fout)
opbrengst
}

// Druk alle velden van de URL af
fmt. Println("Schema:", parsedURL.Schema)
fmt. Println("Ondoorzichtig:", parsedURL.Ondoorzichtig)
fmt. Println("Gebruiker:", parsedURL.Gebruiker)
fmt. Println("Gastheer:", parsedURL.Host)
fmt. Println("Pad:", parsedURL.Path)
fmt. Println("RawPath:", geparseerde URL.RawPath)
fmt. Println("Forceervraag:", parsedURL.ForceQuery)
fmt. Println("RawQuery:", geparseerde URL.RawQuery)
fmt. Println("Fragment:", parsedURL.Fragment)
fmt. Println("Rauw fragment:", geparseerde URL.RawFragment)
}

De voorbeeldURL variabele bevat de volledige, niet-geparseerde URL en de Ontleed functie ontleedt de inhoud van de voorbeeldURL variabele en retourneert de geparseerde URL. Het programma eindigt met een reeks oproepen naar Println om de afzonderlijke velden van de te demonstreren URL structuur.

De ontleedfunctie controleert niet of een URL echt bestaat en ontleedt de URL alleen syntactisch. U kunt de http pakket om een ​​GET-verzoek naar de URL te doen en het antwoord te controleren:

importeren (
"fmt"
"net/http"
)

funcvoornaamst() {
// De URL die u wilt controleren
voorbeeldURL := " https://www.example.com"

// Maak een HTTP GET-verzoek naar de URL
reactie, fout := http. Krijg (voorbeeldURL)

als fout!= nihil {
fmt. Println (fout)
opbrengst
}

verschuiven antwoord. Lichaam. Dichtbij()

// Controleer de antwoordstatuscode
als antwoord. StatusCode == http. StatusOK {
fmt. Println("URL bestaat.")
} anders {
fmt. Println("URL bestaat niet.")
}
}

De voornaamst functie maakt een KRIJGEN verzoek aan de voorbeeldURL de... gebruiken Krijgen functie van de http pakket. Die functie retourneert een responsinstantie en fouttype. Het programma eindigt met een als verklaring om het bestaan ​​van de website te valideren door de HTTP-statuscode tegen de StatusOk constante van de http pakket.

Met deze aanpak kunt u acties ondernemen op basis van de uitkomst van de controle, zoals het omleiden van de gebruiker naar een andere pagina gaat, een foutmelding weergeeft of het verzoek na een bepaalde tijd opnieuw probeert periode.

Coderen en decoderen van URL-parameters

De url pakket biedt de Coderen methode voor het coderen van URL-parameters. De Coderen functie procent codeert speciale tekens en spaties in URL-parameters.

importeren (
"fmt"
"net/url"
)

funcvoornaamst() {
// maak een nieuwe url aan. Waarden structuur
parameters := url. Waarden{}

// voeg waarden toe aan de structuur
parameters. Toevoegen("naam", "John Smith")
parameters. Toevoegen("leeftijd", "30")
parameters. Toevoegen("geslacht", "mannelijk")

// codeer de structuur in een string
gecodeerdParams := parameters. Coderen()
fmt. Println (gecodeerde parameters)

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

De voornaamst functie creëert een nieuwe Waarden struct instantie van de url pakket, en de Toevoegen methode van de struct-instantie voegt sleutel-waardeparen van gegevens toe aan de struct-instantie.

De Coderen methode converteert het sleutel-waardepaar naar de URL-tekenreeksindeling "key1=value1&key2=value2&key3=value3".

U kunt een gecodeerde URL-tekenreeks decoderen met de ParseQuery functie van de url pakket.

importeren (
"fmt"
"net/url"
)

funcvoornaamst() {
// gecodeerde reeks URL-parameters
gecodeerdeParams := "leeftijd=30&geslacht=man&naam=Jan+Smith"

// ontleed de gecodeerde string in een url. Waarden structuur
params, err := url. ParseQuery (gecodeerdParams)

als fout!= nihil {
fmt. Println (fout)
}

// druk de structuur af
fmt. Println (parameters)

// Uitvoer: kaart[leeftijd:[30] geslacht:[man] naam:[John Smith]]
}

De gecodeerdeParameter variabele is een gecodeerde URL-tekenreeks. De ParseQuery functie neemt de gecodeerdeParameter variabele en retourneert de gedecodeerde URL-tekenreeks en een fout.

Deze Go-pakketten kunnen uw webrouteringsspel naar een hoger niveau tillen

De URL's die u gebruikt voor de pagina's van uw webapplicatie dragen bij aan de prestaties en zichtbaarheid op zoekmachines. Webrouting is het proces van het doorsturen van inkomende verzoeken naar de juiste handlerfunctie op basis van de URL.

U kunt routeren met behulp van het http-pakket of populaire pakketten van derden, zoals Gorilla Mux, Chi, Pat of Httprouter. Deze pakketten maken routering eenvoudiger dan het http-pakket door enkele van zijn complexiteiten weg te abstraheren.