Root Routing
Pada sesi sebelumnya kita telah berhasil membuat 2 buah route yaitu / sebagai root dan /author . Namun apa yang terjadi jika kita mengakses route yang belum terdaftar?
Mari kita jalankan kembali kode yang ada pada sesi sebelumnya:
package main
import (
"fmt"
"log"
"net/http"
)
func handlerIndex(w http.ResponseWriter, r *http.Request) {
data := "Welcome to Web Applications written by GO"
w.Write([]byte(data))
}
func handlerAuthor(w http.ResponseWriter, r *http.Request) {
data := "David Winalda"
w.Write([]byte(data))
}
func main() {
http.HandleFunc("/", handlerIndex)
http.HandleFunc("/author", handlerAuthor)
port := "localhost:3030"
log.Println("Server started at", port)
err := http.ListenAndServe(port, nil)
if err != nil {
fmt.Println(err.Error())
}
}Kita coba akses route yang belum terdaftar misalnya /product :

Pada tampilan di atas terlihat bahwa walaupun routing /product belum terdaftar, kita tetap bisa menjalankan program. Namun akan mengakses root darti routing yang telah didaftarkan yaitu / . Untuk mengatasi hal ini, kita dapat menambahkan beberapa baris kode.
package main
import (
"fmt"
"log"
"net/http"
)
func handlerIndex(w http.ResponseWriter, r *http.Request) {
// Membuat kondisi jika ada route yang belum terdaftar
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}
data := "Welcome to Web Applications written by GO"
w.Write([]byte(data))
}
func handlerAuthor(w http.ResponseWriter, r *http.Request) {
data := "David Winalda"
w.Write([]byte(data))
}
func main() {
http.HandleFunc("/", handlerIndex)
http.HandleFunc("/author", handlerAuthor)
port := "localhost:3030"
log.Println("Server started at", port)
err := http.ListenAndServe(port, nil)
if err != nil {
fmt.Println(err.Error())
}
}Kita menambahkan kondisional di dalam fungsi handlerIndex untuk mengatasi jika ada yang mengakses routing yang belum terdaftar:
if r.URL.Path != "/" {
http.NotFound(w, r)
return
}Jika dijalankan kembali route /product , maka program akan merespon seperti berikut ini:

Last updated
Was this helpful?