URLs (Uniform Resource Locators) são uma das peças mais críticas da infraestrutura da Internet. Ao criar aplicativos da Web, você precisará manipular URLs para localizar e recuperar recursos.
Ao criar aplicativos da Web mais sofisticados, você precisará trabalhar com URLs em um nível mais refinado. Pode ser necessário identificar o esquema, o nome do host, o caminho e os parâmetros de consulta. Você também precisará saber como codificar e decodificar URLs para poder lidar com caracteres especiais e manter seu aplicativo da Web seguro.
A biblioteca padrão do Go fornece o pacote net/url para lidar com URLs e componentes de URL.
O pacote de URLs
O url pacote fornece funções e recursos abrangentes para trabalhar com URLs e suas partes separadas. Ele fornece funções para analisar, construir, codificar e decodificar URLs, tornando o pacote útil para desenvolvimento web.
Algumas das principais características do url pacote são a capacidade de analisar URLs em componentes individuais para manipulação e construção de URL para solicitações HTTP. O url pacote também fornece um URL estrutura com um Analisar método para analisar strings em URLs.
Aqui está o url. URL modelo de estrutura:
pacote principal
tipo URL estrutura {
// Esquema é o esquema de protocolo da URL,
// como "http" ou "https"
Esquema corda// Opaque é usado para manter quaisquer dados opacos
// que deve ser codificado na URL
Opaco corda// O usuário contém informações sobre o usuário que está fazendo a solicitação,
// como um nome de usuário e senha
Usuário *Informações do usuário// Host é o nome do host ou endereço IP
// do servidor que hospeda a URL
Hospedar corda// Path é o caminho da URL no servidor
Caminho corda// RawPath é o original,
// caminho codificado da URL
RawPath corda// ForceQuery indica se a URL deve incluir uma query string
// mesmo que esteja vazio
ForceQuery bool// RawQuery é o original,
// string de consulta codificada da URL
RawQuery corda// Fragmento é o identificador de fragmento da URL,
// usado para vincular a um elemento específico em uma página
Fragmento corda
// RawFragment é o original,
// identificador de fragmento codificado da URL
RawFragment corda
}
Saber como acessar várias partes do URL struct pode ser útil para tarefas como validação.
Analisando URLs usando a função Parse
O Analisar função do url O pacote fornece a funcionalidade para analisar strings de URL em componentes individuais. O Analisar A função usa um único URL como argumento e retorna um ponteiro para o url. URL struct contendo os dados analisados da URL e um tipo de erro.
Veja como você pode usar o Analisar função para recuperar os elementos de um URL.
importar (
"fmt"
"rede/url"
)funçãoprincipal() {
// A URL que você deseja analisar
url de exemplo := " https://www.example.com/path? param1=valor1¶m2=valor2"// Analisa a URL
parsedURL, erro := url. Analisar (exampleURL)se erro != nada {
fmt. Println (err)
retornar
}
// Imprime todos os campos da URL
fmt. Imprimirln("Esquema:", parsedURL.Scheme)
fmt. Imprimirln("Opaco:", parsedURL.Opaco)
fmt. Imprimirln("Do utilizador:", parsedURL.User)
fmt. Imprimirln("Hospedar:", parsedURL.Host)
fmt. Imprimirln("Caminho:", parsedURL.Path)
fmt. Imprimirln("RawPath:", parsedURL.RawPath)
fmt. Imprimirln("ForçarConsulta:", parsedURL.ForceQuery)
fmt. Imprimirln("RawQuery:", parsedURL.RawQuery)
fmt. Imprimirln("Fragmento:", parsedURL.Fragment)
fmt. Imprimirln("RawFragment:", parsedURL.RawFragment)
}
O url de exemplo variável contém o URL completo e não analisado e o Analisar função analisa o conteúdo do url de exemplo variável e retorna a URL analisada. O programa termina com uma série de chamadas para Println para demonstrar os campos individuais do URL struct.
A função parse não verifica se uma URL é real e realmente existe, apenas analisa a URL sintaticamente. Você pode usar o http pacote para fazer uma solicitação GET para a URL e verificar a resposta:
importar (
"fmt"
"rede/http"
)funçãoprincipal() {
// A URL que você deseja verificar
url de exemplo := " https://www.example.com"// Faça uma solicitação HTTP GET para a URL
resposta, erro := http. Obter (exampleURL)se erro != nada {
fmt. Println (err)
retornar
}
adiar resposta. Corpo. Fechar()
// Verifica o código de status da resposta
se resposta. StatusCode == http. Estado OK {
fmt. Imprimirln("URL existe.")
} outro {
fmt. Imprimirln("A URL não existe.")
}
}
O principal função faz um PEGAR pedido ao url de exemplo usando o Pegar função do http pacote. Essa função retorna uma instância de resposta e um tipo de erro. O programa termina com uma se declaração para validar a existência do site, verificando o Código de status HTTP contra o StatusOk constante do http pacote.
Essa abordagem permite que você execute ações com base no resultado da verificação, como redirecionar o usuário para uma página diferente, exibindo uma mensagem de erro ou repetindo a solicitação após um determinado período.
Codificação e decodificação de parâmetros de URL
O url pacote fornece o Codificar método para codificar parâmetros de URL. O Codificar função codifica caracteres especiais e espaços em parâmetros de URL.
importar (
"fmt"
"rede/url"
)funçãoprincipal() {
// cria uma nova url. Estrutura de valores
parâmetros := url. Valores{}// adiciona valores ao struct
parâmetros Adicionar("nome", "João Smith")
parâmetros Adicionar("idade", "30")
parâmetros Adicionar("gênero", "macho")// codifica a estrutura em uma string
encodedParams := params. Codificar()
fmt. Println (encodedParams)
// Output: "age=30&gender=male&name=John+Smith"
}
O principal função cria um novo valores instância de estrutura do url pacote, e o Adicionar O método da instância struct adiciona pares de dados chave-valor à instância struct.
O Codificar O método converte o par chave-valor no formato de string de URL "key1=value1&key2=value2&key3=value3".
Você pode decodificar uma string de URL codificada com o ParseQuery função do url pacote.
importar (
"fmt"
"rede/url"
)funçãoprincipal() {
// string codificada de parâmetros de URL
parâmetros codificados := "idade=30&gênero=masculino&nome=John+Smith"
// analisa a string codificada em um url. Estrutura de valores
parametros, erro := url. ParseQuery (encodedParams)
se erro != nada {
fmt. Println (err)
}
// imprime a estrutura
fmt. Println (parâmetros)
// Output: map[age:[30] gender:[male] name:[John Smith]]
}
O parâmetro codificado variável é uma string de URL codificada. O ParseQuery função leva em parâmetro codificado variável e retorna a string de URL decodificada e um erro.
Esses pacotes Go podem levar seu jogo de roteamento da Web para o próximo nível
As URLs que você usa para as páginas do seu aplicativo da web contribuem para seu desempenho e visibilidade nos mecanismos de pesquisa. O roteamento da Web é o processo de direcionar solicitações de entrada para a função de manipulador apropriada com base na URL.
Você pode rotear usando o pacote http ou pacotes populares de terceiros, como Gorilla Mux, Chi, Pat ou Httprouter. Esses pacotes tornam o roteamento mais fácil do que o pacote http, abstraindo algumas de suas complexidades.