Web server sederhana dengan Golang


Membuat website dengan Golang cukup mudah. Kita hanya memerlukan package net/http untuk membuat web server sederhana untuk handling setiap http request yang masuk. Kali ini saya hanya akan membuat web server untuk handling 2 endpoint, yang hanya akan menampilkan text sederhana.

Pertama buat file static.go, untuk membuat web server langsung saja initialize abstract data type Server, yang ada di package net/http.

server := http.Server{
     Addr: ":8080",
     Handler: &httpHandler{},
}
server.ListenAndServe()

Pada source code diatas terlihat, kita melakukan initialize httpHandler, untuk itu kita perlu membuat abstract data type httpHandler.

// HTTP Handler
type httpHandler struct{}

// Handling http request
func (handler *httpHandler) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
	if endpoint, ok := routes[req.URL.String()]; ok {
		endpoint(rw, req)
	}
}

Setelah membuat struct yang akan melakukan handling setiap http request, kita perlu membuat map untuk mendeskripsikan endpoint yang kita sediakan, serta function untuk setiap endpoint tersebut. Di source code diatas, terlihat kita melakukan pengecekan ke map `routes`. Maka dari itu kita perlu membuat map `routes`.


var routes map[string]func(http.ResponseWrite, *http.Request)

Selanjutnya kita perlu mendeskripsikan endpoint apa saja yang sediakan.

routes = make(map[string]func(http.ResponseWriter, *http.Request))
routes["/hello"] = hello
routes["/"] = home

Perlu juga untuk menyediakan aksi untuk setiap endpoint tersebut.

// Home endpoint
func home(rw http.ResponseWriter, req *http.Request) {
	fmt.Fprint(rw, "Home")
}

// Say hello endpoint
func hello(rw http.ResponseWriter, req *http.Request) {
	fmt.Fprint(rw, "Hello World")
}

Karena kita menggunakan beberapa package untuk membuat aplikasi ini, maka kita perlu melakukan import untuk setiap package tersebut.

import (
	"fmt"
	"net/http"
)

Ok, selesai. Silahkan check disini untuk source code lengkap-nya. Gunakan perintah berikut untuk menjalankan aplikasi diatas.

go build static.go

./static

Sekian, dan semoga bermanfaat

References: 

Building a web server in Go [http://thenewstack.io/building-a-web-server-in-go/]

Package http [https://golang.org/pkg/net/http/]

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s