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