Buat API RESTful dengan Kerangka Gin

Diterbitkan: 2022-09-02

Apakah Anda ingin membuat REST API dengan bantuan kerangka kerja Gin? Maka, Anda harus membaca blog ini secara menyeluruh. Melalui langkah-langkah sederhana, Anda akan belajar membuat API dasar, setelah itu Anda dapat melakukan proyek kompleks lainnya. Dan ya, Anda dapat mengerjakannya sendiri tanpa menggunakan layanan pengembangan Golang . Tapi, sebelum kita mulai, kenali dulu aspek teoritis dari kerangka kerja Gin.

  1. Tugas Pertama yang Harus Diselesaikan
  • Anda perlu membuat direktori terlebih dahulu di go-workspace Anda. Anda akan menggunakan Command Prompt jika Anda menggunakan komputer Windows. Gunakan Terminal jika Anda menggunakan macOS atau Linux sebagai sistem operasi Anda.
  • Saya akan menggunakan Command Prompt dalam skenario ini.

cd go-workspace

pekerjaan mkdir

pekerjaan cd

kode.

Saat kita mengetik code ., kita bisa melihat VS Code diluncurkan. Dalam kasus Anda, itu mungkin IDE atau editor yang berbeda.

  1. Memulai dengan Kode VS
  • Hal pertama yang akan kita lakukan adalah membuat file main.go. Setelah ini, kita harus mengunduh kerangka kerja gin untuk membuat REST API.
  • Kita sekarang harus membuat file go.mod. Kami mengetik:

go mod init golang.com/job

  • Setelah pembuatan file go.mod, kita akan mengetik:

buka github.com/gin-gonic/gin

Ini akan menyebabkan file go.sum dibuat serta semua paket yang diperlukan terkait dengan kerangka kerja gin untuk diunduh.

  1. Mari Memulai dengan API Sederhana
  • Kami hanya menuliskan kode

paket utama

impor (

“fmt”

“bersih/http”

“github.com/gin-gonic/gin”

)

fungsi utama()

{s :=gin.Default()

s.GET (“”, func (c *gin.Context){

c.String(http.StatusOK, "Apa peran pekerjaan?")

})

s.Run (“localhost: 8000”)

}

  • Seperti yang Anda lihat, kami telah mengimpor setiap paket yang dibutuhkan aplikasi. Kami kemudian melanjutkan langsung ke fungsi utama. Apa yang kami lakukan adalah membangun modul default middleware recovery atau logger untuk Gin.
  • Pengaturan default termasuk dalam variabel “s.” Dan kami akan menggunakan variabel ini untuk membantu pengembangan GET API. Argumen pertama yang saya berikan dalam contoh ini adalah URL API.
  • URL dasar yang ditentukan oleh w.Run(“localhost:8000”) akan digunakan untuk menghosting API di localhost:8000. Selanjutnya, argumen pertama sebenarnya menunjukkan rute relatif API.
  • Fungsi handler func (c *gin.Context) mengacu pada urutan fungsi yang dapat Anda berikan.
  • Pointer ke variabel *gin.Context berfungsi sebagai argumen fungsi. Oleh karena itu, "c" dalam contoh ini berarti konteks.
  • Konteks harus mengembalikan nilai yang berupa c.String atau c.JSON. Di sini, ada dua kriteria dalam operasi. Status ditunjukkan oleh argumen pertama, integer langsung (http.StatusOK). Kami dapat menggunakan ini karena kami mengimpor paket net/http.
  • Saya hanya mengirim string sampel setelah ini. Ini adalah "Apa peran pekerjaan?"
  1. Ayo Jalankan Program Diatas

Untuk menjalankan program, kita harus mengetik go run main.go.

  • Seperti yang Anda lihat, ada permintaan GET pada URL kosong. Itu juga dilengkapi dengan fungsi yang dapat disesuaikan. Selain itu, operasi mode pelepasan mesin terlihat. Ada satu titik akhir aktif di localhost 8000.
  • Di browser web, kita dapat mengetik localhost:8000 untuk melihat:
  • Sementara itu, Anda akan melihat cuplikan berikut di Kode VS

Apa artinya ini? Nah, kerangka kerja gin memainkan peran besar di sini dalam memantau waktu respons kode yang dijalankan.

  1. Berkonsentrasi pada GET API di mana Parameter Passing Ditangani oleh URL

Kode berikut mengasumsikan bahwa API akan memberi Anda nilai, idealnya string, sebagai respons terhadap URL.

s.GET(“/:get”, func (c *gin.Context){

var val = c.Param(“getr”)

c.JSON(http.StatusOK, gin.H{

“data tanggapan”:val,

})

})

//bagian ke-2

  • Kami dapat memberikan setiap nama variabel ke dalam permintaan GET dengan memisahkannya dengan titik dua. Semua yang dimasukkan setelah URL dasar akan dianggap sebagai "dapatkan".
  • Untuk menentukan nilai “get”, kita harus mendefinisikan konteks Param dan nama variabel yang telah kita sebutkan. Val akan menerima 'get' dari Gin dan diberitahu tentang hasilnya.
  • Selanjutnya, kita melihat bahwa saya mentransfer JSON yang berisi nilai.

Apakah Anda mengerjakan sesuatu yang kompleks? Maka itu akan menjadi ide terbaik untuk memanfaatkan layanan pengembangan Golang jika Anda menemukan masalah dan tidak dapat memperbaikinya.

  1. Ayo Jalankan Program Diatas
  • Sekali lagi, kita harus menjalankan program dengan mengetikkan go run main.go.

Jika Anda melihat pesan 'tcp 127.0.0.1: 8000: bind:Hanya satu penggunaan setiap alamat soket (protokol/alamat jaringan/port) biasanya diizinkan.', maka Anda harus melakukan operasi di Command Prompt.

nestat -ano | findstr :8000

Periksa nilai MENDENGARKAN (misalnya 7932), maka Anda harus mengetik

taskkill / pid 7932 /F

Ini akan menyebabkan penghentian proses pid.

  • Di browser kami melakukan hal berikut:

Alasan kami harus memasukkan string setelah menyatakan localhost:8000 adalah karena API mengharapkan string dari URL.

  1. Mencoba POST API
  • Kami akan mencoba menghubungkan ke POST API di sini. Selanjutnya, kami menyadari bahwa data akan ada di dalam tubuh. Ini adalah saat struct akan berguna.
  • Apakah Anda ingat bagian ini?

paket utama

impor (

“fmt”

“bersih/http”

“github.com/gin-gonic/gin”

)

  • Setelah ini, kami akan membuat struct yang memiliki dua bidang data, seperti yang Anda lihat:

ketik Struktur pekerjaan {

Gaji int `json:”gaji” mengikat: “wajib”`

String nama `json:”nama” mengikat: “wajib”`

}

  • Json:"gaji" dan json:"nama" mewakili kunci yang berbeda. Anda juga dapat melihat bahwa pengikatan telah ditentukan sebagai "wajib".
  • Mengikuti bagian //2, kita akan mengetik:

s.POST(“/highlight”, func (c *gin.Context){

pekerjaan data var

jika err := c.ShouldBind(&data); salah != nihil{

fmt.Println (err)

c.JSON(http.StatusBadRequest, gin.H{

“kesalahan”: fmt.Sprintf(“%v”, err),

})

} kalau tidak{

c.JSON(http.StatusOK, gin.H{

“data” : data,

})

}

})

  • Mari kita lihat blok kode ini. Dalam s.POST, kita akan membuat objek untuk Job. Konteks "c" kemudian harus dilampirkan ke model data setelah itu. Jika c.ShouldBind(&data) melontarkan kesalahan, itu akan memperingatkan API tentang masalah tersebut.
  • Saya membuat permintaan buruk yang menunjukkan kesalahan yang diamati di “error”:fmt.Sprintf(“%v”, err) di c.JSON(http.StatusBadRequest).
  • Jika tidak ada masalah, kunci "data" akan digunakan untuk mengirimkan data kembali ke respons API.
  1. Ayo Jalankan Blok Kode Terakhir
  • Sekarang mari kita periksa tahap akhir program. Kita harus mengetik go run main.go untuk melakukan ini. Selain itu, saya akan menggunakan Postman untuk menunjukkan cara kerja API dan cara kerja kode. Versi desktop hanya perlu diinstal.
  • Anda dapat melihat bahwa saya memiliki dua bidang data di badan jika Anda melihat tangkapan layar di bawah ini. Raw dan JSON harus menjadi pilihan untuk Tubuh.
  • Saat kita mengklik 'Kirim', kita akan melihat hasil berikut:

{

“data”: {

“gaji”: 23000,

"nama": "Robert Hall"

}

}

Apakah Anda dapat memahami program tersebut? Ya? Lalu, bagus. Dalam kasus terakhir, kita bisa melihat tiga API berjalan, yang tidak disebutkan di URL, yang mengharapkan string dan yang terakhir yang mengharapkan nilai di badan. Semoga, Anda dapat menangani beberapa tugas REST API yang menantang sekarang.