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