Halo teman-teman semuanya, pada artikel sebelumnya kita telah belajar bagaimana cara melakukan installasi dan konfigurasi ORM Gorm pada project Go yang kita punya dan pada kesempatan kali ini kita semua akan belajar bagaimana cara menampilkan list data posts dari database dalam format JSON di Go.
Langkah 1 - Membuat Controller Post
Silahkan teman-teman buat folder baru dengan nama controllers
dan di dalam folder tersebut silahkan buat file baru dengan nama postsController.go
, kemudian masukkan kode berikut ini.
controllers/postController.go
package controllers
import (
"santrikoding/backend-api/models"
"github.com/gin-gonic/gin"
)
// get all posts
func FindPosts(c *gin.Context) {
//get data from database using model
var posts []models.Post
models.DB.Find(&posts)
//return json
c.JSON(200, gin.H{
"success": true,
"message": "Lists Data Posts",
"data": posts,
})
}
Dari penambahan kode di atas, pertama kita definisikan package yang kita gunakan adalah controllers
.
package controllers
Kemudian kita import model yang ada di dalam project kita.
"santrikoding/backend-api/models"
Dan kita juga import web framework Gin.
"github.com/gin-gonic/gin"
Setelah itu, kita membuat function baru dengan nama FindPosts
, dimana fungsi ini menerima sebuah context *gin.Context
sebagai parameter.
// get all posts
func FindPosts(c *gin.Context) {
//...
}
Di dalamnya, kita membuat variable posts
yang nanati digunakan untuk menyimpan list data posts dari database.
var posts []models.Post
Selanjutnya, kita melakukan query ke database untuk mengambil semua data posts dan menyimpannya ke dalam variabel posts
.
models.DB.Find(&posts)
Terakhir, kita tinggal mengembalikan ke dalam format JSON dengan status code 2002
dan berisi informasi tentang keberhasilan operasi, pesan, dan data posts yang telah diambil dari database.
//return json
c.JSON(200, gin.H{
"success": true,
"message": "Lists Data Posts",
"data": posts,
})
Langkah 2 - Membuat Route API Posts
Setelah berhasil membuat controller-nya, maka kita lanjutkan untuk membuatkan route-nya. Silahkan teman-teman buka file main.go
, kemudian ubah semua kode-nya menjadi seperti berikut ini.
main.go
package main
import (
"santrikoding/backend-api/controllers"
"santrikoding/backend-api/models"
"github.com/gin-gonic/gin"
)
func main() {
//inisialiasai Gin
router := gin.Default()
//panggil koneksi database
models.ConnectDatabase()
//membuat route dengan method GET
router.GET("/", func(c *gin.Context) {
//return response JSON
c.JSON(200, gin.H{
"message": "Hello World!",
})
})
//membuat route get all posts
router.GET("/api/posts", controllers.FindPosts)
//mulai server dengan port 3000
router.Run(":3000")
}
Dari perubahan kode di atas, pertama kita import models dan controllers terlebih dahulu.
"santrikoding/backend-api/controllers"
"santrikoding/backend-api/models"
Dan di dalam function main
, kita panggil fungsi ConnectDatabase
yang sebelumnya kita buat di dalam models
.
//panggil koneksi database
models.ConnectDatabase()
Dan kita menambahkan route baru untuk Rest API Posts Index.
//membuat route get all posts
router.GET("/api/posts", controllers.FindPosts)
Di atas, kita membuat route baru dengan method GET
dan path yang digunakan adalah /api/posts
dan jika route tersebut dieksekusi, maka akan memanggil controller dengan fungsi FindPosts
.
Langkah 3 - Uji Coba Rest API
Silahkan restrat server Go-nya terlebih dahulu, yaitu dengan cara distop dan start lagi.
Untuk melakukan uji coba, kita akan menggunakan aplikasi yang bernama Postman
, jadi silahkan teman-teman unduh melalui link berikut ini https://postman.com/downloads/
Silahkan teman-teman buka aplikasi Postman
, kemudian masukkan URL berikut ini http://localhost:3000/api/posts dan untuk method-nya silahkan pilih GET
.
Jika sudah, silahkan klik Send
dan jika berhasil maka teman-teman akan mendapatkan response JSON yang kurang lebih seperti berikut ini.
{
"data": [],
"message": "Lists Data Posts",
"success": true
}
Kesimpulan
Pada artikel kali ini, kita telah belajar bagaimana cara menampilkan list data posts dari database dalam format JSON di Go.
Dan pada artikel berikutnya, kita semua akan belajar bagaimana cara melakukan proses insert data ke dalam database di Go.
Terima Kasih