Backendhabit

Backendhabit

Membuat Simple Rest API dengan Golang (net/http)

Membuat Simple Rest API dengan Golang (net/http)

Introduction Seperti yang telah kita tahu bahwa perkembangan teknologi informasi sangatlah cepat, disamping itu kita sebagai programmer juga dituntut untuk selalu update mengenai hal tersebut. salah satu nya adalah dari bahasa pemrograman itu sendiri, dulu programmer hanya tahu nya bahasa C, C++, Java , PHP dll tapi sekarang karena kebutuhan orang berkomunikasi secara online meningkat maka dibutuhkan lah sebuah bahasa yang ringan, cepat dan tanggung dan salah satu nya itu adalah Go Language.

Membuat Rest API dengan Golang

Dalam golang sendiri, kebutuhan untuk membuat webservice API sudah disediakan dan kita tinggal pakai, menggunakan library net/http saja kita sudah bisa membuat simple Rest API seperti sebagai berikut

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", handleHelloWorld)

    var address = "localhost:6666"
    fmt.Println("server berhasil running di alamat %s", address)

    err := http.ListenAndServe(address, nil)
    if err != nil {
        fmt.Println(err)
    }
}

func handleHelloWorld(writer http.ResponseWriter, request *http.Request) {
    var message = "Hello World from Golang"
    writer.Write([]byte(message))
}

kemudian kita tinggal eksekusi file tersebut dengan command

 go run simple.go

dan kalian bisa akses menggunakan browser atau curl dan akan muncul pesan yang telah kita buat tadi.

image.png

Cara Golang Menghandle HTTP Method

Lalu step berikut nya, bagaimana supaya kita bisa membuat API menggunakan method-method HTTP seperti GET, POST, DELETE etc. Masih menggunakan library yang sama yaitu net/http kita bisa menangkap method yang dikirim menggunakan r.Method seperti pada contoh dibawah ini.

package main

import (
    "log"
    "net/http"
)

type server struct {

}

func (s *server) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    switch r.Method {
        case "GET" :
            w.WriteHeader(http.StatusOK)
            w.Write([]byte(`{"message": "get called"}`))
        case "POST" :
            w.WriteHeader(http.StatusOK)
            w.Write([]byte(`{"message": "post called"}`))
        case "PUT" :
            w.WriteHeader(http.StatusOK)
            w.Write([]byte(`{"message": "put called"}`))
        case "DELETE" :
            w.WriteHeader(http.StatusOK)
            w.Write([]byte(`{"message": "delete called"}`))
        default:
            w.WriteHeader(http.StatusNotFound)
            w.Write([]byte(`{"message": "not found"}`))
    }
}

func main() {
    s := &server{}
    http.Handle("/", s)
    log.Fatal(http.ListenAndServe(":8000", nil))
}

jika script diatas dijalankan maka kita bisa menggunakan perintaih-perintah curl dibawah ini

image.png

dari contoh sederhana diatas kita sudah bisa membuat simple REST API menggunakan Golang, selanjut nya dimateri nanti kita akan langsng praktik membuat simple app todo list crud menggunakan twitter dan golang

References golang.org/doc dormoshe.io

 
Share this