Pacote net/url
Pacote net/url
Go nos fornece o pacote net/url para facilitar a manipulação de URLs, como ele podemos construir, analisar e manipular URLs.
Extraindo propriedades de uma URL.
No exemplo abaixo vamos extrair as propriedades scheme, host, path e query parameter.
u, err := url.Parse("https://www.google.com/search?q=golang")
if err != nil {
panic(err)
}
fmt.Printf("Scheme: %s\n", u.Scheme)
fmt.Printf("Host: %s\n", u.Host)
fmt.Printf("Path: %s\n", u.Path)
fmt.Printf("RawQuery: %s\n", u.RawQuery)
>> Scheme: https
>> Host: www.google.com
>> Path: /search
>> RawQuery: q=golang
Construindo e manipulando parâmetros
Para criarmos parâmetros com o pacote net/url podemos utilizar a função Add do tipo Values conforme exemplo abaixo:
queryParameters := url.Values{}
queryParameters.Add("app_name", "movie_service")
queryParameters.Add("database", "movies")
fmt.Println(queryParameters.Encode())
>> app_name=movie_service&database=movies
Adicionando mais de um valor ao mesmo parâmetro
queryParameters := url.Values{}
queryParameters.Add("type", "frame")
queryParameters.Add("colors", "blue")
queryParameters.Add("colors", "green")
queryParameters.Add("colors", "yellow")
fmt.Println(queryParameters.Encode())
>> colors=blue&colors=green&colors=yellow&type=frame
Alterando o valor de um parâmetro
Para alterarmos o valor de um parâmetro podemos utilizar a função Set, conforme exemplo abaixo:
queryParameters := url.Values{}
queryParameters.Add("app_name", "movie_service")
queryParameters.Add("database", "movies")
fmt.Println(queryParameters.Encode())
queryParameters.Set("database", "theater")
fmt.Println(queryParameters.Encode())
>> app_name=movie_service&database=movies
>> app_name=movie_service&database=theater
Obtendo o valor de um único parâmetro
Podemos obter o valor de uma parâmetro através da função Get
queryParameters := url.Values{}
queryParameters.Add("app_name", "movie_service")
queryParameters.Add("database", "movies")
d := queryParameters.Get("database")
fmt.Println(d)
>> movies
Verificando se um parâmetro existe
Podemos verificar a existência de um parâmetro através da função Has
queryParameters := url.Values{}
queryParameters.Add("app_name", "movie_service")
queryParameters.Add("database", "movies")
d := queryParameters.Has("database")
fmt.Println(d)
>> true
Removendo um parâmetro
Podemos remover um parâmetro através da função Del
Dica
Se o parâmetro não existir, não será gerado nenhum erro
queryParameters := url.Values{}
queryParameters.Add("app_name", "movie_service")
queryParameters.Add("database", "movies")
queryParameters.Del("database")
fmt.Println(queryParameters.Encode())
>> app_name=movie_service