Golang : How to validate URL the right way
Validating input from user or external sources is critical and needed to ensure that your program will not simply process 'garbage' data. You know, garbage in, garbage out.
I've seen many programmers use the net/url.Parse()
function returning error message as the way to validate URL. However, it is NOT the right way and why you should use a better URL validator, such as govalidator package to validate a URL.
Typically a Golang developer validates an URL with net/url.Parse()
function. Such as the code below.
package main
import (
"fmt"
"net/url"
)
func main() {
str := "//socketloop.com"
var validURL bool
_, err := url.Parse(str)
if err != nil {
fmt.Println(err)
validURL = false
} else {
validURL = true
}
fmt.Printf("%s is a valid URL : %v \n", str, validURL)
}
This method has many weaknesses and if you change the str
value to d or wwwsocketloopcom, net/url.Parse()
function will still pass the broken URL as valid. This is NOT the right way to validate URL.
To validate an URL properly, use the IsURL()
function from github.com/asaskevich/govalidator
package.
package main
import (
"fmt"
"github.com/asaskevich/govalidator"
)
func main() {
str := "//www.socketloop.com"
validURL := govalidator.IsURL(str)
fmt.Printf("%s is a valid URL : %v \n", str, validURL)
}
Play around by changing the input URL and you will see that this method is more robust than the previous code.
References :
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+13.2k Golang : How to pass map to html template and access the map's elements
+15.7k Golang : Merge video(OpenCV) and audio(PortAudio) into a mp4 file
+26.1k Golang : Convert CSV data to JSON format and save to file
+6.4k Golang : Gorrila mux.Vars() function example
+19.1k Android Studio : AlertDialog and EditText to get user string input example
+9.1k Golang : Ordinal and Ordinalize a given number to the English ordinal numeral
+8.3k Golang : Generate Codabar
+4.6k PHP : Hide PHP version information from curl
+4.3k Golang : Convert lines of string into list for delete and insert operation
+38.7k Golang : UDP client server read write example
+8.1k Golang : automatically figure out array length(size) with three dots
+6.1k CloudFlare : Another way to get visitor's real IP address