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
disini kita akan membuat sebuah REST API sederhana untuk menampilkan post
buat subuah file baru, beri nama main.go
package main
import (
"encoding/json"
"net/http"
)
func main() {
}
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"`
}
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"
}
]
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)
}
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