Membuat API dengan Golang

membuat web api sederhana dengan golang

Prima adi

2 minute read

Pengenalan

Api atau application programming interface adalah service , perintah , fungsi atau protokol yang dapat di gunakan untuk membangun sistem tertentu.

Web api adalah api yang berbasis web, merupakan kumpulan fungsi yang biasanya di akses menggunakan protokol http dengan response xml atau json

kita akan membuat api dengan response json

sample data

pertama kita akan buat sample data

package main

import (
    "net/http"
    "encoding/json"
    "fmt"
)

type User struct {
    ID    string
    Name  string
    Age   int
}

var data = []User{
    User{"B01", "joker", 30},
    User{"H01", "batman", 32},
    User{"H02", "seperman", 103},
}

diatas terdapat type User yang berbentuk struct dan variable data adalah list of user

handler return users

kita akan mencoba memberikan client list of users yang telah kita buat tadi. membutuhkan import net/http untuk membuat handle function.

func getAllUsers(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    if r.Method == "GET" {
        var result, err = json.Marshal(data)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        w.Write(result)
        return
    }
    http.Error(w, "", http.StatusBadRequest)
}

dalam block code di atas w.Header().Set("Content-Type", "application/json") untuk write header agar client tau bahwa response yang di berikan adalah json. r.Method adalah method yang di gunakan client . r sendiri merupakan type http.Request di dalam package net/http. json.Marshal(data) membuat data menjadi string sehinga dapat di tulis kedalam response.

Dari code di atas jika method nya tidak get akan return http error.

memasukan handler kedalam router

setelah itu masukan handler kedalam route sehingga dapat di akses user

func main() {
    http.HandleFunc("/users", getAllUsers)

    fmt.Println("starting web server at http://localhost:8080/")
    http.ListenAndServe(":8080", nil)
}

http.HandleFunc adalah function yang digunakan untuk register function kedalam router sehingga jika client open path /users maka akan dijalankan function getAllUsers

golang dapat menerima function sebagai parameter

full example

package main

import (
    "net/http"
    "encoding/json"
    "fmt"
)

type User struct {
    ID    string
    Name  string
    Age   int
}

var data = []User{
    User{"B01", "joker", 30},
    User{"H01", "batman", 32},
    User{"H02", "seperman", 103},
}

func main() {
    http.HandleFunc("/users", getAllUsers)

    fmt.Println("starting web server at http://localhost:8080/")
    http.ListenAndServe(":8080", nil)
}

func getAllUsers(w http.ResponseWriter, r *http.Request) {
    w.Header().Set("Content-Type", "application/json")
    if r.Method == "GET" {
        var result, err = json.Marshal(data)
        if err != nil {
            http.Error(w, err.Error(), http.StatusInternalServerError)
            return
        }
        w.Write(result)
        return
    }
    http.Error(w, "", http.StatusBadRequest)
}

open localhost:8080/users pada browser dan berikut hasilnya

membuat api dengan golang

comments powered by Disqus