Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

URL-urile (Uniform Resource Locators) sunt una dintre cele mai critice piese de infrastructură a internetului. Pe măsură ce creați aplicații web, va trebui să manipulați adresele URL pentru a localiza și a prelua resurse.

Când creați aplicații web mai sofisticate, va trebui să lucrați cu adrese URL la un nivel mai precis. Poate fi necesar să identificați schema, numele gazdei, calea și parametrii de interogare. De asemenea, va trebui să știți cum să codificați și să decodați adresele URL, astfel încât să puteți gestiona caracterele speciale și să vă păstrați aplicația web în siguranță.

Biblioteca standard Go oferă pachetul net/url pentru a gestiona adresele URL și componentele URL.

Pachetul URL

The url pachetul oferă funcții și caracteristici complete pentru a lucra URL-urile și părțile lor separate. Oferă funcții pentru analizarea, construirea, codificarea și decodarea URL-urilor, făcând pachetul util pentru dezvoltarea web.

instagram viewer

Unele dintre caracteristicile cheie ale url pachet sunt capacitatea de a analiza URL-uri în componente individuale pentru manipulare și construcție URL pentru solicitările HTTP. The url pachetul oferă, de asemenea, un URL struct cu a Analiza metodă pentru analizarea șirurilor de caractere în adrese URL.

Iată url. URL model structura:

pachet principal

tip URL struct {
// Schema este schema de protocol a URL-ului,
// cum ar fi „http” sau „https”
Sistem şir

// Opac este folosit pentru a păstra orice date opace
// care ar trebui să fie codat în URL
Opac şir

// Utilizatorul deține informații despre utilizatorul care face cererea,
// cum ar fi un nume de utilizator și o parolă
Utilizator *Informații utilizator

// Gazdă este numele de gazdă sau adresa IP
// al serverului care găzduiește adresa URL
Gazdă şir

// Calea este calea URL-ului de pe server
cale şir

// RawPath este originalul,
// calea codificată a adresei URL
RawPath şir

// ForceQuery indică dacă adresa URL ar trebui să includă un șir de interogare
// chiar dacă este gol
ForceQuery bool

// RawQuery este originalul,
//șirul de interogare codificat al adresei URL
RawQuery şir

// Fragment este identificatorul de fragment al URL-ului,
// folosit pentru a lega un anumit element dintr-o pagină
Fragment şir

// RawFragment este originalul,
// identificatorul de fragment codificat al adresei URL
RawFragment şir
}

A ști cum să accesezi diverse părți ale URL struct poate fi util pentru sarcini precum validarea.

Analizarea URL-urilor folosind funcția Parse

The Analiza funcția de url pachetul oferă funcționalitatea pentru analizarea șirurilor URL în componente individuale. The Analiza funcția ia un singur URL ca argument și returnează un pointer către url. URL struct care conține datele analizate ale URL-ului și un tip de eroare.

Iată cum puteți utiliza Analiza funcția de a prelua elementele unui URL.

import (
"fmt"
"net/url"
)

funcprincipal() {
// Adresa URL pe care doriți să o analizați
exampleURL := " https://www.example.com/path? param1=valoare1&param2=valoare2"

// Analizați adresa URL
parsedURL, err := url. Analizați (exampleURL)

dacă greș!= zero {
fmt. Println (eroare)
întoarcere
}

// Tipăriți toate câmpurile URL-ului
fmt. Println("Sistem:", parsedURL.Scheme)
fmt. Println("Opac:", parsedURL.Opaque)
fmt. Println("Utilizator:", parsedURL.User)
fmt. Println("Gazdă:", parsedURL.Host)
fmt. Println("Cale:", 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)
}

The exampleURL variabila deține adresa URL completă, neanalizată și Analiza funcția analizează conținutul exampleURL variabilă și returnează adresa URL analizată. Programul se încheie cu o serie de apeluri către Println pentru a demonstra câmpurile individuale ale URL struct.

Funcția de analiză nu verifică dacă o adresă URL este una reală care există de fapt, ci doar analizează URL-ul sintactic. Puteți folosi http pachet pentru a face o solicitare GET la adresa URL și a verifica răspunsul:

import (
"fmt"
"net/http"
)

funcprincipal() {
// Adresa URL pe care doriți să o verificați
exampleURL := " https://www.example.com"

// Faceți o solicitare HTTP GET către adresa URL
răspuns, greșit := http. Obține (exampleURL)

dacă greș!= zero {
fmt. Println (eroare)
întoarcere
}

amâna raspuns. Corp. Închide()

// Verificați codul de stare a răspunsului
dacă raspuns. StatusCode == http. StareOK {
fmt. Println(„URL-ul există”.)
} altfel {
fmt. Println(„URL-ul nu există”.)
}
}

The principal funcția face a OBȚINE cerere către exampleURL folosind obține funcția de http pachet. Această funcție returnează o instanță de răspuns și un tip de eroare. Programul se încheie cu un dacă declarație pentru a valida existența site-ului prin verificarea Cod de stare HTTP impotriva Stare OK constantă de la http pachet.

Această abordare vă permite să luați acțiuni bazate pe rezultatul verificării, cum ar fi redirecționarea utilizator la o altă pagină, afișând un mesaj de eroare sau reîncercând solicitarea după o anumită perioadă perioadă.

Codificarea și decodificarea parametrilor URL

The url pachetul oferă Codifica metoda de codificare a parametrilor URL. The Codifica funcția procente codifică caractere speciale și spații în parametrii URL.

import (
"fmt"
"net/url"
)

funcprincipal() {
// creează o nouă adresă URL. Structura valorilor
parametri := url. Valori{}

// adaugă valori la structura
parametrii. Adăuga("Nume", "John Smith")
parametrii. Adăuga("vârstă", "30")
parametrii. Adăuga("gen", "masculin")

// codifică structura într-un șir
encodedParams := parametri. Codifica()
fmt. Println (encodedParams)

// Ieșire: „age=30&gender=male&name=John+Smith”
}

The principal funcția creează o nouă Valori instanță struct a url pachet, iar Adăuga metoda instanței struct adaugă perechi cheie-valoare de date la instanța struct.

The Codifica metoda convertește perechea cheie-valoare în formatul șirului URL „key1=value1&key2=value2&key3=value3”.

Puteți decoda un șir URL codificat cu ParseQuery funcția de url pachet.

import (
"fmt"
"net/url"
)

funcprincipal() {
// șir codificat de parametri URL
encodedParams := „age=30&gender=masculin&nume=John+Smith”

// analizează șirul codificat într-o adresă URL. Structura valorilor
params, err := url. ParseQuery (encodedParams)

dacă greș!= zero {
fmt. Println (eroare)
}

// tipăriți structura
fmt. Println (parametri)

// Ieșire: hartă[vârsta:[30] sex:[bărbați] nume:[John Smith]]
}

The encodedParameter variabila este un șir URL codificat. The ParseQuery funcția ia în encodedParameter variabilă și returnează șirul URL decodat și o eroare.

Aceste pachete Go vă pot duce jocul de rutare web la următorul nivel

Adresele URL pe care le utilizați pentru paginile aplicației dvs. web contribuie la performanța și vizibilitatea acesteia pe motoarele de căutare. Rutarea web este procesul de direcționare a solicitărilor primite către funcția de gestionare corespunzătoare, pe baza adresei URL.

Puteți ruta folosind pachetul http sau pachetele populare de la terți, cum ar fi Gorilla Mux, Chi, Pat sau Httprouter. Aceste pachete fac rutarea mai ușoară decât pachetul http prin abstracția unora dintre complexitățile sale.