Adresy URL (Uniform Resource Locators) jsou jednou z nejdůležitějších součástí infrastruktury internetu. Při vytváření webových aplikací budete muset manipulovat s adresami URL, abyste našli a získali zdroje.
Když vytváříte sofistikovanější webové aplikace, budete muset pracovat s adresami URL na jemnější úrovni. Možná budete muset identifikovat schéma, název hostitele, cestu a parametry dotazu. Budete také potřebovat vědět, jak kódovat a dekódovat adresy URL, abyste mohli pracovat se speciálními znaky a udržovat svou webovou aplikaci v bezpečí.
Standardní knihovna Go poskytuje balíček net/url pro zpracování URL a komponent URL.
URL balíček
The url balíček poskytuje komplexní funkce a vlastnosti pro práci s URL a jejich samostatné části. Poskytuje funkce pro analýzu, konstrukci, kódování a dekódování adres URL, díky čemuž je balíček užitečný pro vývoj webu.
Některé z klíčových vlastností url balíček jsou schopnost analyzovat URL do jednotlivých komponent pro manipulaci a konstrukci URL pro HTTP požadavky. The url balíček také poskytuje a URL struktura s a Analyzovat metoda pro analýzu řetězců na adresy URL.
Zde je url. URL model struktury:
balík hlavní
typ URL strukturovat {
// Schéma je schéma protokolu adresy URL,
// jako "http" nebo "https"
Systém tětiva// Neprůhledné se používá k uložení jakýchkoli neprůhledných dat
// který by měl být zakódován v URL
Neprůhledný tětiva// Uživatel uchovává informace o uživateli, který zadává požadavek,
// jako je uživatelské jméno a heslo
Uživatel *Info o uživateli// Host je název hostitele nebo adresa IP
// serveru hostujícího adresu URL
Hostitel tětiva// Cesta je cesta adresy URL na serveru
Cesta tětiva// RawPath je originál,
// zakódovaná cesta URL
RawPath tětiva// ForceQuery označuje, zda má adresa URL obsahovat řetězec dotazu
// i když je prázdný
ForceQuery bool// RawQuery je originál,
//zakódovaný řetězec dotazu adresy URL
RawQuery tětiva// Fragment je identifikátor fragmentu adresy URL,
// používá se pro odkazování na konkrétní prvek na stránce
Fragment tětiva
// RawFragment je originál,
// zakódovaný identifikátor fragmentu adresy URL
RawFragment tětiva
}
Vědět, jak přistupovat k různým částem URL struct může být užitečná pro úkoly, jako je ověřování.
Analýza adres URL pomocí funkce analýzy
The Analyzovat funkce url balíček poskytuje funkce pro analýzu řetězců URL do jednotlivých komponent. The Analyzovat funkce bere jedinou URL jako argument a vrací ukazatel na url. URL struktura obsahující analyzovaná data adresy URL a typ chyby.
Zde je návod, jak můžete použít Analyzovat funkce pro načtení prvků adresy URL.
import (
"fmt"
"net/url"
)funchlavní() {
// Adresa URL, kterou chcete analyzovat
exampleURL := " https://www.example.com/path? param1=hodnota1¶m2=hodnota2"// Analyzujte adresu URL
parsedURL, err := url. Analýza (exampleURL)-li chyba!= nula {
fmt. Println (chyba)
vrátit se
}
// Vytiskne všechna pole adresy URL
fmt. Println("Systém:", parsedURL.Scheme)
fmt. Println("Neprůhledný:", parsedURL.Opaque)
fmt. Println("Uživatel:", parsedURL.User)
fmt. Println("Hostitel:", parsedURL.Host)
fmt. Println("Cesta:", 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 proměnná obsahuje úplnou, neanalyzovanou adresu URL a Analyzovat funkce analyzuje obsah exampleURL a vrátí analyzovanou adresu URL. Program končí sérií volání na Println demonstrovat jednotlivé obory URL strukturovat.
Funkce analýzy nekontroluje, zda je adresa URL skutečná, která skutečně existuje, pouze syntakticky analyzuje adresu URL. Můžete použít http balík pro odeslání požadavku GET na adresu URL a kontrolu odpovědi:
import (
"fmt"
"net/http"
)funchlavní() {
// Adresa URL, kterou chcete zkontrolovat
exampleURL := " https://www.example.com"// Vytvořte požadavek HTTP GET na adresu URL
odpověď, chyba := http. Získat (exampleURL)-li chyba!= nula {
fmt. Println (chyba)
vrátit se
}
odložit Odezva. Tělo. Zavřít()
// Zkontrolujte kód stavu odpovědi
-li Odezva. StatusCode == http. StavOK {
fmt. Println("URL existuje.")
} jiný {
fmt. Println("URL neexistuje.")
}
}
The hlavní funkce dělá a DOSTAT žádost na exampleURL za použití Dostat funkce http balík. Tato funkce vrací instanci odpovědi a typ chyby. Program končí an -li prohlášení k ověření existence webu kontrolou Stavový kód HTTP proti StavOk konstantní od http balík.
Tento přístup vám umožňuje provádět akce na základě výsledku kontroly, jako je přesměrování uživatele na jinou stránku, zobrazení chybové zprávy nebo opakování požadavku po určité době doba.
Kódování a dekódování parametrů URL
The url balíček poskytuje Zakódovat metoda pro kódování parametrů URL. The Zakódovat funkce procent-kóduje speciální znaky a mezery v parametrech URL.
import (
"fmt"
"net/url"
)funchlavní() {
// vytvořit novou adresu URL. Struktura hodnot
parametry := url. hodnoty{}// přidání hodnot do struktury
parametry. Přidat("název", "John Smith")
parametry. Přidat("stáří", "30")
parametry. Přidat("Rod", "mužský")// zakóduje strukturu do řetězce
encodedParams := parametry. Zakódovat()
fmt. Println (encodedParams)
// Výstup: "age=30&gender=male&name=John+Smith"
}
The hlavní funkce vytvoří nový Hodnoty instance struktury the url balíček a Přidat metoda instance struct přidá páry klíč-hodnota dat do instance struct.
The Zakódovat metoda převede pár klíč–hodnota na formát řetězce adresy URL "klíč1=hodnota1&klíč2=hodnota2&klíč3=hodnota3".
Kódovaný řetězec URL můžete dekódovat pomocí ParseQuery funkce url balík.
import (
"fmt"
"net/url"
)funchlavní() {
// zakódovaný řetězec parametrů URL
encodedParams := "age=30&gender=male&name=John+Smith"
// analyzovat zakódovaný řetězec do adresy URL. Struktura hodnot
parametry, chyba := url. ParseQuery (encodedParams)
-li chyba!= nula {
fmt. Println (chyba)
}
// vytiskne strukturu
fmt. Println (parametry)
// Výstup: mapa[věk:[30] pohlaví:[muž] jméno:[John Smith]]
}
The encodedParameter proměnná je zakódovaný řetězec URL. The ParseQuery funkce bere v encodedParameter a vrátí dekódovaný řetězec URL a chybu.
Tyto balíčky Go mohou posunout vaši hru s trasováním webu na novou úroveň
Adresy URL, které používáte pro stránky vaší webové aplikace, přispívají k jejímu výkonu a viditelnosti ve vyhledávačích. Webové směrování je proces směrování příchozích požadavků na příslušnou funkci obsluhy na základě adresy URL.
Můžete směrovat pomocí balíčku http nebo oblíbených balíčků třetích stran, jako je Gorilla Mux, Chi, Pat nebo Httprouter. Tyto balíčky usnadňují směrování než balíček http tím, že abstrahují některé jeho složitosti.