paint-brush
How to Encode a URL in Goby@jimmy315
2,368 reads
2,368 reads

How to Encode a URL in Go

by JimmyOctober 4th, 2023
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

In Go (Golang), you can encode a URL using the standard library package `net/url`, which provides mainly two functions url.QueryEscape() and url.PathEscape() to perform URL (Uniform Resource Locators) encoding. In the above example, a URL is passed as a query parameter. The `url.QueryEscape() `function is used to make sure that the provided input is encoded correctly.
featured image - How to Encode a URL in Go
Jimmy HackerNoon profile picture

In Go (Golang), you can encode a URL using the standard library package net/url, which provides mainly two amazing functions to perform URL (Uniform Resource Locators) encoding.


  1. Encode the URL using the PathEscape function

    Purpose of url.PathEscape() is used to encode a URL's path segment. Here's an example of how to encode a URL in Go using PathEscape:


    package main
    
    import (
    	"fmt"
    	"net/url"
    )
    
    func main() {
    	// Define the URL you want to encode
    	rawURL := "https://app.hackernoon.com?q=go programming"
    
    	// Encode the URL
    	encodedURL := url.PathEscape(rawURL)
    
    	// Print the encoded URL
    	fmt.Println("Encoded URL using PathEscape:", encodedURL)
    }
    


    In the above example, a URL is passed as a query parameter. The url.QueryEscape() function is used to make sure that the provided input is encoded correctly.


    Output:

    Encoded URL using PathEscape: https:%2F%2Fapp.hackernoon.com%3Fq=go%20programming
    


    Time complexity: O(n) where 'n' is the length of the provided input URL string to QueryEscape function.



  2. Encode the URL using the QueryEscape function

    Purpose of url.QueryEscape() is primarily used to encode URL query parameters.


    package main
    
    import (
    	"fmt"
    	"net/url"
    )
    
    func main() {
    	// Define the URL you want to encode
    	rawURL := "https://app.hackernoon.com?q=go programming"
    
    	// Encode the URL
    	encodedURL := url.QueryEscape(rawURL)
    
    	// Print the encoded URL
    	fmt.Println("Encoded URL using QueryEscape:", encodedURL)
    }
    


    Output:

    Encoded URL using QueryEscape: https%3A%2F%2Fapp.hackernoon.com%3Fq%3Dgo+programming
    


    Time complexity: O(n) where 'n' is the length of the provided input URL string to PathEscape function.


The net/url package includes several important components. Let`s use the net/url Package.


This package offers a complete collection of types and functions for parsing, modifying, and creating URLs. It enables programmers to manage a variety of URL-related tasks, including hostname manipulation, query parameter processing, and URL creation from scratch.


Other Functions in the URL package


  1. func JoinPath ( added in go1.19 )


func JoinPath(base string, elem ...string) (result string, err error)


2. func PathEscape ( added in go1.8 )


func PathEscape(s string) string


3. func PathUnescape ( added in go1.8 )


func PathUnescape(s string) (string, error)


4. func QueryEscape


func QueryEscape(s string) string


5. func QueryUnescape


func QueryUnescape(s string) (string, error)


Go provides the above function to perform on URLs. As per your requirement, you can use any one of them.


Explore the net/url package documentation and more details on pkg.go.dev.