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?