Mastering Golang
  • Tentang Go
  • Instalasi Go
  • Membuat Project Go
  • Go Run & Go Build
  • Apa itu Package pada Go
  • Imports dan Exports
  • Variabel
  • Tipe Data
  • Konstanta dan Komentar
  • Operator
  • Type Conversion
  • Kondisional - IF
  • Kondisional - Switch Case
  • Looping
  • Array
  • Array - Looping
  • Slices
  • Pointer
  • Map
  • Fungsi
  • Struct
  • Method
  • Interface
  • Interface Kosong
  • Concurrency
  • Concurrency - Goroutines
  • Channel
  • Buffered Channel
  • Channel - Close and Range
  • Channel - Direction
  • Channel - Select
  • Concurrency - WaitGroup
  • Concurrency - Mutex
  • JSON Data
  • SQL
  • URL Parsing
  • GO Vendor
  • Unit Testing
  • Go Basic for Web Development
    • Aplikasi Web pada Go - Hello World
    • Root Routing
    • Query String
    • Web Service API Server
    • HTTP Basic Auth
    • RESTFul API dengan Gin dan Gorm
Powered by GitBook
On this page

Was this helpful?

  1. Go Basic for Web Development

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:

PreviousAplikasi Web pada Go - Hello WorldNextQuery String

Last updated 4 years ago

Was this helpful?

Program tetap berjalan walaupun routing product belum terdaftar
Route product tidak ditemukan