Golang Rest API

Pendahuluan

Halo netizen, pada blog kali ini aku akan menjelaskan pada kalian semua tentang cara membuat REST Api di bahasa pemrogrmana Golang. Sebelumnya kalian pada tau ga sih, REST Api itu apa? nah bagi yang belum tau, REST itu adalah sebuah singkatan dari Representational State Transfer. nah itu doang?:v wkwkwk jadi maksudnya REST itu memungkinkan sebuah pertukaran data antara client dan server melalui HTTP/HTTPS. Client dapat mengakses sebuah Endpoint yang dapat mengambil data, menghapus data, edit data ataupun melakukan sesuatu pada server.

Format data yang diterima dari server adalah sebuah JSON

{
  "firstName": "John",
  "lastName": "Smith",
  "age": 25
}

berikut adalah contoh REST API:
https://jsonplaceholder.typicode.com/todos/1

Membuat REST API

disini kita akan membuat sebuah REST API sederhana untuk menampilkan post

Import yang dibutuhkan

buat subuah file baru, beri nama main.go

package main
import (
        "encoding/json"
        "net/http"
)

func main() {
    

}

Membuat struktur data dengan struct

tambahkan struct kedalam file main.go. struct berfungsi untuk menyimpan data yang akan dibuat.

type Post struct {
    Title  string `json:"title"`
    Author string `json:"author"`
    Text   string `json:"text"`
}

Membuat HTTP Handler

http handler berfungsi untuk menangani setiap API Endpoint. Buat sebuah fungsi baru yang bernama PostHandler

func PostHanler(w http.ResponseWriter, r *http.Request)  {
    posts := []Post{
        {Author: "Muhajir", Title: "post 1", Text: "post text"},
        {Author: "Muhajir", Title: "post 2", Text: "post text"},
        {Author: "Muhajir", Title: "post 2", Text: "post Text"},
    }

    json.NewEncoder(w).Encode(posts)
}

array posts akan diencode menjadi json kemudian ditampikan sebagai response.

panggil fungsi yang telah dibuat kedalam http handler dengan cara memanggil fungsi handleFunc pada func main sehingga dalam fungsi main akan seperti ini.

func main() {
    http.HandleFunc("/posts", PostHanler)
    http.ListenAndServe(":8081", nil)
}

fungsi PostHandler akan dijalankan setiap endpoint /posts diakses kemudian kita serve enpoint pada port 8081.

jalankan dengan cara go run main.go kemudian buka web dan akses localhost:8081/post maka hasil response saat endpoint /posts diakses akan seperti ini :

[
  {
  "title": "post 1",
  "author": "Muhajir",
  "text": "post text"
  },
  {
  "title": "post 2",
  "author": "Muhajir",
  "text": "post text"
  },
  {
  "title": "post 2",
  "author": "Muhajir",
  "text": "post Text"
  }
]

Final code

package main

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

type Post struct {
    Title  string `json:"title"`
    Author string `json:"author"`
    Text   string `json:"text"`
}

func main() {
    http.HandleFunc("/posts", PostHanler)
    http.ListenAndServe(":8081", nil)
}

func PostHanler(w http.ResponseWriter, r *http.Request)  {
    posts := []Post{
        {Author: "Muhajir", Title: "post 1", Text: "post text"},
        {Author: "Muhajir", Title: "post 2", Text: "post text"},
        {Author: "Muhajir", Title: "post 2", Text: "post Text"},
    }

    json.NewEncoder(w).Encode(posts)
}

Fungsi REST Api

REST Api berfungsi untuk menyajikan sebuah konten yang diakses melalui enpoint. konten yang disajikan berasal dari server dan akan dikirim ke client adalah berupa file json