Hello Kawan - kawan sekalian, Kali ini saya akan membuat Tulisan tentang Golang Rest API menggunakan Framerowk GIN.
Kenapa Saya Menulis ini karena dapet tantangan dari Mas Yuki untuk membuat presentasi tentang golang, nah saya coba deh untuk menulis nya hehehehe....
mungkin gak usah di jelaskan ya golang itu apa karena bisa di lihat di LINK_INI yang telah di tulis oleh mas yuki sebelumnya sudah jelas dan gamblang tentang go.
Lalu Apa itu GIN adalah salah satu framework yang di buat dengan bahasa go . sudah fiture - fiture yang ada di framework ini seperti koneksi database,json formater dan banyak lagi. Untuk lebih lanjutnya bisa di buka di LINK_INI.
Langsung Saja saya tunjukan langkah - langkah membuat Golang Rest API menggunakan GIN framework, ini juga hasil berguru saya dan cari - cari referensi
Sebelumnya Untuk Koding GO harus mengatur gopath dan goroot nya dulu untuk itu bisa di lihat di tutorial LINK_INI
Setelah Sudah di setting saatnya untuk beraksi.
Pertama Ketikan :
perintah di atas adakah untuk memclone framework gin , gorm dan go driver sql
owh iya di sini untuk ORM nya saya memakai GORM.
Setelah itu Kita Buat koneksi Ke database seperti berikut:
Di atas adalah kodingan untuk mengakses database menggunakan gorm untuk mengakses database nya bisa di sesuaikan nantinya untuk user ,password dan nama database nya.
Selanjutnya Kita akan buat model nya untuk kita olah datanya. kalau di golang namanya adalah struct
kodingannya sebagai berikut:
di dalam model atau struch ini kita untuk membuat model itu sebagai Object table kita tandai dengan gorm.Model . Di dalam struct juga kita dapat langsung membuat json yang nantinya akan kita tampilkan nantinya dengan cara `json:"nama"` .
Selanjutnya kita akan buat function untuk Create nya. Kodingannya sebagai berikut :
function di atas adalah function untuk cretae data ke database menggunkan gin.Context yang digunakan untuk memanggil fungsi gin. Untuk binding data yang akan di masukan menggunakan c.Bind(&std) dengan pertama buat variable data atau object yang akan di masukan seperti contoh di atas adalah var std transformedStudent adalah objet yang saya gunakan untuk masukan. fungsi db.Create(&model) untuk menyimpan ke database berdasarkan data yang di masukan dari object. fungsi dari c.JSON(http.StatusOK, gin.H{"message": http.StatusOK, "result": model}) adalah untuk mengeluarkan response json dari function yang di buat.
Selajutnya kita membuat function get All berikut kodinganya:
fungsi dari adalah db.Find(&model) untuk mencari semua data yang ada di dalam database, sebelumnya kita definisikan dulu modelnya menjadi sebuah listnya dengan cara seperti berikut var model [] student . Untuk Flownya codingan di atas adalah mencari semua data yang di dalam database lalu di buat object model list setelah itu di transfer ke bentuk object view yang akan di tampilkan.
Selanjutnya kita membuat function get Detail berikut kodinganya:
Cara Untuk Parsing id di atas menggunakan fungsi modelID := c.Param("id") untuk mencari data sesuai dengan field yang di cari di sini saya mencari id yang di masukan . Dan fungsi untuk mencari data sesuai dengan param yang di inginkan dari fungsi di atas.
Selanjutnya kita membuat function update berikut kodinganya :
Untuk Update di atas ada fungsi db.Model(&model).Update(transferVoToModel(vo)) untuk mengupdate data ke dalam database.
Selanjutnya kita buat function delete berikut kodinganya:
Untuk Delete di atas ada fungsi db.Delete(model) untuk mendelete data yang ada di dalam database berdasarkan id yang di kirimkan.
Selanjutnya kita buat routernya untuk mengases semua function melalui REST HTTP berikut kodinganya:
Router di atas di gunakan untuk client mengakses function yang ada di dalam go dengan menggunakan REST HTTP. fungsi router := gin.Default() di gunakan untuk mendefinisikan variable router sebagai router gin default. fungsi v1 := router.Group("/api/student") digunakan untuk membuat nama url . fungsi router.Run(":20001") digunakan untuk membuat go berjalan di port yang di inginkan di sini saya menggunakan port 20001.
Demikian lah Tutorial membuat REST API Golang mengguanakan GIN framework, untuk kodingan versi full nya ada di LINK
Semoga bermanfaat untuk semuanya..
Sumber:
https://medium.com/@thedevsaddam/build-restful-api-service-in-golang-using-gin-gonic-framework-85b1a6e176f3
https://github.com/gin-gonic/gin
https://github.com/jinzhu/gorm
https://www.youtube.com/watch?v=Mq6qk2xPJsc&t=2039s
Showing posts with label golang. Show all posts
Showing posts with label golang. Show all posts
Saturday, June 23, 2018
Tuesday, December 15, 2015
Raw SQL to Query using Beego
Masih seputar Beego, dimana sebelumnya kita membahas develop REST API sekarang kita akan membahas ORM di Beego. Kita tidak akan membahas ORM di Beego secara mendetail, karena cukup luas dan mendalam. Yang akan kita bahas disini hanya Raw SQL-nya.
Istilah Raw disini bisa kita artikan sebagai mentah (belum tersentuh), dengan kata lain Raw SQL adalah syntax-syntax query yang dipergunakan. Contoh SELECT, UPDATE, DELETE ataupun yang lainnya.
Sebagai study kasus disini, kita akan membaca table view dari database. Berikut struktur view-nya
Buat file test_orm.go di workspace golang, lalu ketik source code berikut ini :
Penjelasaanya adalah
Istilah Raw disini bisa kita artikan sebagai mentah (belum tersentuh), dengan kata lain Raw SQL adalah syntax-syntax query yang dipergunakan. Contoh SELECT, UPDATE, DELETE ataupun yang lainnya.
Sebagai study kasus disini, kita akan membaca table view dari database. Berikut struktur view-nya
Buat file test_orm.go di workspace golang, lalu ketik source code berikut ini :
Penjelasaanya adalah
- Bagian import
- Ada 2 library yang kita gunakan, yaitu beego/orm dan mysql sebagai driver database
- Bagian struct
- Disini kita define struktur data dari tabel view kita
- Bagian fungsi init
- Fungsi ini digunakan untuk connect ke database kita. Contoh, connect ke database mysql.
- Bagian fungsi main
- Yang pertama kita lakukan adalah mendaftarkan orm kita dengan syntax orm.NewOrm()
- Kemudian kita jalankan Raw SQL-nya
- Setelah itu dicetak semua datanya
Hasilnya adalah sebagai berikut :
Raw SQL jarang sekali kita gunakan, namum ada beberapa kasus lebih mudah penyelesaiinnya lewat Raw SQL seperti akses ke table view.
Ok, sementara itu dulu pengunaan Raw SQL di Beego. Nantikan ulasan-ulasan Beego lainnya di blog ini. Terima kasih.
Building Web API using Beego
Di dalam blog ini saya masih berbicara tentang golang. Sama dengan bahasa pemrograman lainnya, golang memiliki banyak framework untuk membuatnya segalanya menjadi rapid.
Yang akan kita bahas disini adalah Beego, salah satu HTTP Framework yang menggunakan golang. Kenapa disebut sebagai HTTP Framework, karena Beego bukan hanya sekedar web framework tapi bisa digunakan untuk develop API backend service secara rapid.
Mari kita mulai dari persyaratannya :
Setelah itu, kita siapkan sisi database-nya. Contoh tabel yang kita pake adalah :
Kemudian ikuti langkah-langkah dibawah ini :
Done. Begitu mudahnya kita membuat REST API dengan Beego dengan ditambahkan swagger akan mempermudah kita untuk testing REST API yang telah kita buat.
Yang akan kita bahas disini adalah Beego, salah satu HTTP Framework yang menggunakan golang. Kenapa disebut sebagai HTTP Framework, karena Beego bukan hanya sekedar web framework tapi bisa digunakan untuk develop API backend service secara rapid.
Mari kita mulai dari persyaratannya :
- Pastikan environment kita sudah terinstall golang. Jika belum bisa lihat disini sebagai acuan.
- Install Beego dengan cara :
Setelah semua lengkap mari kita mulai membuat program dari workspace golang :
- cd $GOPATH/src
Kemudian ikuti langkah-langkah dibawah ini :
- bee api testing-app -tables="roles" -conn=yuki:welcome1@tcp\(127.0.0.1:3306\)/testing
- cd testing-app
- bee run -downdoc=true -gendoc=true
- buka di browser dan jalankan http://localhost:8080/swagger/swagger-1/
Done. Begitu mudahnya kita membuat REST API dengan Beego dengan ditambahkan swagger akan mempermudah kita untuk testing REST API yang telah kita buat.
Dari sini kita bisa lihat Beego menawarkan fitur yang keren dan rapid. Rapid sangat dibutuhkan mengingat informasi selalu berubah dalam tiap detiknya.
Ok, sementara itu dulu ulasan tentang Beego, tunggu kita di blog-blog Beego lainnya.
Friday, September 18, 2015
Memilih Full Framework untuk GO.
Beberapa waktu yang lalu saya dan rekan-rekan di berikan sebuah tantangan untuk membuat aplikasi menggunakan Go. Hal yang menjadi tantangan adalah bagaimana membangun aplikasi menggunakan GO yang scalable dan powerfull.
Membangun aplikasi menggunakan GO sangatlah mudah kita bisa menggunakan beberapa framework berikut untuk membuat aplikasi rest api, contohnya:
Untuk mendapatkan beberapa feature diatas saya membutuhkan sebuah full framework yang sudah menginclude feature diatas. Berikut 2 framework yang sekarang sedang saya riset:
Membangun aplikasi menggunakan GO sangatlah mudah kita bisa menggunakan beberapa framework berikut untuk membuat aplikasi rest api, contohnya:
- Gorilla Mux (http://www.gorillatoolkit.org/pkg/mux)
- Gin (https://gin-gonic.github.io/gin/)
- Atau, Martini (https://github.com/go-martini/martini)
Tapi, ada beberapa feature yang tidak disediakan oleh framework diatas, misalnya:
- Session management
- Caching
- Logging
- Database access
- Asynchronous job queue
- Development and deployment tools
- MVC or other architectural pattern
- Revel
- BeeGo
REVEL
Sebuah Web Framework seperti Django dan Rails. Memiliki banyak utility dan Patterns yang bisa digunakan untuk mendukung pembuatan aplikasi menggunakan GO.
Kelebihan.
- Memiliki tools revel. (tool yang bisa kita gunakan untuk mengenerate aplikasi go , menjalankan server dan lain-lain)
- Logging. (Revel memungkinkan kita untuk membuat log yang dipisahkan ke bebrapa type seperti: error, info, dll)
- Interceptors and filters
BEEGO
Sama halnya Web Framework seperti Revel, teteapi memiliki komunitas dan memiliki built-in feature yang lebih baik dari Revel.
Kelebihan.
- bee tool
- Filter middleware
- SQL/ORM support
- Swagger.
Tuesday, September 15, 2015
Golang plugin for Intellij
Dalam posting kali ini kita akan membahas IDE. Ada banyak IDE yang di pake untuk develop go, seperti :
Karena saya dari Java programmer yang memutuskan mendalami go (baca. Why Go Programming ? (Not Java)), maka saya menggunakan Intellij sebagai IDE untuk proses develop go.
Cukup mudah bukan, install go plugins di Intellij. Nantikan posting-posting kami selanjutnya berkaitan dengan go programming.
- LiteIDE
- Sublime dengan plugin go
- Intellij dengan plugin go
- dan lain-lainnya.
Karena saya dari Java programmer yang memutuskan mendalami go (baca. Why Go Programming ? (Not Java)), maka saya menggunakan Intellij sebagai IDE untuk proses develop go.
Untuk proses installasi plugin go di Intellij, lakukan langkah berikut :
- Pilih menu Preferences
- Klik Plugins
![]() |
| Preferences - Plugins |
- Klik Browse repositories
- Klik Manage Repository
- Klik tombol tambah
- Isi Repository URL dengan ini
- Klik tombol Ok
- Pilih plugins go
- Ikuti langkah selanjutkan hingga selesai.
Cukup mudah bukan, install go plugins di Intellij. Nantikan posting-posting kami selanjutnya berkaitan dengan go programming.
Environment yang digunakan :
- OS X Yosemite
- Go 1.4.2
- Intellij IDEA 14.1.4
Sumber :
Cross Compilation using Go
Masih seputar Go Programming, dimana pembahasan kali ini berkaitan dengan cross compile. Sebelum apa sih cross compile itu ?
Cross compile adalah kemampuan compiler untuk meng-compile di platform tertentu, tetapi proses pengerjaannya di platform yang berbeda. Contoh: kita bikin program di OS X lalu kita compile untuk jalan di Windows. Itu lah cross compile.
Kasus yang akan kita coba kurang lebih sama, yaitu membuat program di OS X dan di jalankan di windows dengan menggunakan bahasa pemrograman golang.
Sebelum kita mulai ada beberapa istilah di environment golang yang harus kita pahami dulu, yaitu :
Berikut contoh environment di OS X :
Untuk sementara sekian dulu dari kami, nantikan posting-posting kami selanjutnya berkaitan dengan golang.
Cross compile adalah kemampuan compiler untuk meng-compile di platform tertentu, tetapi proses pengerjaannya di platform yang berbeda. Contoh: kita bikin program di OS X lalu kita compile untuk jalan di Windows. Itu lah cross compile.
Kasus yang akan kita coba kurang lebih sama, yaitu membuat program di OS X dan di jalankan di windows dengan menggunakan bahasa pemrograman golang.
- OS X disini kita sebut sebagai Host OS (developing on).
- Windows kita sebut sebagai Target OS (running on).
Sebelum kita mulai ada beberapa istilah di environment golang yang harus kita pahami dulu, yaitu :
- $GOHOSTARCH : Architecture processor yang di pake untuk develop. Dalam hal ini amd64 (64 bit).
- $GOHOSTOS : Operating system yang di pake untuk develop. Dalam hal ini darwin (OS X).
- $GOARCH : Architecture processor yang digunakan untuk menjalankan program. Dalam hal ini amd64 (64 bit).
- $GOOS : Operating system yang digunakan untuk menjalankan program. Dalam hal ini windows.
Berikut contoh environment di OS X :
![]() |
| go env |
Disitu terlihat sama antara $GOHOSTARCH dan $GOARCH begitu juga sebaliknya antara $GOHOSTOS dan $GOOS.
Untuk itu kita harus menyesuaikan $GOARCH dan $GOOS menjadi :
Untuk itu kita harus menyesuaikan $GOARCH dan $GOOS menjadi :
- amd64 untuk $GOARCH
- windows untuk $GOOS
Caranya adalah sebagai berikut :
- Masuk ke directory source code go
$ cd /usr/local/go/src
- Jalankan perintah berikut.
$ sudo GOOS=windows ./make.bash
Sekarang saatnya bikin program sederhana untuk di jalankan di windows. Berikut snapshoot programnya :
Setelah itu kita compile untuk jalan di mesin windows dengan cara sebagai berikut
Wow... begitu mudahnya melakukan cross compile dengan golang. Cukup membuat satu program dan bisa kita compile di beberapa platform seperti OS X, Linux ataupun Windows.
package main
import "fmt"
import "runtime"
func main() {
fmt.Printf("Hello %s/%s\n", runtime.GOOS, runtime.GOARCH)
}
Setelah itu kita compile untuk jalan di mesin windows dengan cara sebagai berikut
$ env GOOS=windows GOARCH=amd64 go build -o hello_amd64.exe hello.goHasilnya setelah kita jalan seperti ini
| windows |
![]() |
| OS X |
Wow... begitu mudahnya melakukan cross compile dengan golang. Cukup membuat satu program dan bisa kita compile di beberapa platform seperti OS X, Linux ataupun Windows.
Untuk sementara sekian dulu dari kami, nantikan posting-posting kami selanjutnya berkaitan dengan golang.
Monday, June 22, 2015
Why Go Programming ? (Not Java)
Mungkin ini selalu terbesit di benak kita apabila kita belajar Go. Apa yang membedakan Go dibandingkan bahasa pemrograman yang lain. Karena saya dari Java Programmer, saya selalu membandingkan Java dengan Go. Apa sih kehebatan Go dibanding dengan Java.
Mari kita bahasa dari :
Object Oriented Programming
Semua orang mengenal Java as Object Oriented Programming. Dan biasanya selalu meng-anak tirikan Functional Programming atau Procedure Programming. Itulah yang ada di benak sebagai orang, termasuk saya.
Cemen kalau loe gak pake OOP. Yups, sekali lagi itulah yang ada di benak saya. Hingga akhirnya saya mempelajari Go dan mengambil keputusan, apa salahnya dengan function programming.
Ya, apa salahnya dengan functional programming. Go bisa dibuat seperti OOP namun dia sendiri tidak mempunyai class. Yang di pakai di Go adalah struct, sama seperti C.
Concurrent
Nah inilah kelebihan dari Go, karena dia sudah dilengkapi dengan concurrent. Dengan adanya concurrent kita bisa memanfaatkan core dari processor dengan optimal.
Lalu apakah Java tidak ada concurrent ? Tentu di Java ada, namun saya sendiri belum mencoba apakah concurrent di Java lebih baik atau sebaliknya.
Library and Tools
Untuk ini Java lebih bagus, karena library and tools lebih banyak. Secara Java sudah ada lebih dulu di bandingkan Go. Terlebih lagi Java di dukung oleh komunitas dan vendor-vendor besar seperti IBM, HP, Oracle dan lain-lainnya. Bagi programmer Go jangan berkecil hati, karena library Go cukup banyak.
Performance
Untuk yang ini menurut saya pribadi Go lebih baik. Karena Go berjalan langsung di atas OS, tidak seperti Java yang berjalan di atas Virtual Machine. Walaupun Java VM di claim performance nya tidak jauh berbeda dengan native.
Banyak hal lagi yang bisa kita bahas disini, namun dari semua itu saya mengambil kesimpulan "Language just a tools to solve the problem". Yups, apapun bahasa pemrogramannya mereka semua adalah alat yang kita gunakan untuk memecahkan masalah.
Untuk saya pribadi Go merupakan salah satu bahasa pemrograman terbaik dan layak kita gunakan untuk production melihat performance cukup bagus.
Mari kita bahasa dari :
- Object Oriented Programming
- Concurrent
- Library and Tools
- Performance
Object Oriented Programming
Semua orang mengenal Java as Object Oriented Programming. Dan biasanya selalu meng-anak tirikan Functional Programming atau Procedure Programming. Itulah yang ada di benak sebagai orang, termasuk saya.
Cemen kalau loe gak pake OOP. Yups, sekali lagi itulah yang ada di benak saya. Hingga akhirnya saya mempelajari Go dan mengambil keputusan, apa salahnya dengan function programming.
Ya, apa salahnya dengan functional programming. Go bisa dibuat seperti OOP namun dia sendiri tidak mempunyai class. Yang di pakai di Go adalah struct, sama seperti C.
Concurrent
Nah inilah kelebihan dari Go, karena dia sudah dilengkapi dengan concurrent. Dengan adanya concurrent kita bisa memanfaatkan core dari processor dengan optimal.
Lalu apakah Java tidak ada concurrent ? Tentu di Java ada, namun saya sendiri belum mencoba apakah concurrent di Java lebih baik atau sebaliknya.
Library and Tools
Untuk ini Java lebih bagus, karena library and tools lebih banyak. Secara Java sudah ada lebih dulu di bandingkan Go. Terlebih lagi Java di dukung oleh komunitas dan vendor-vendor besar seperti IBM, HP, Oracle dan lain-lainnya. Bagi programmer Go jangan berkecil hati, karena library Go cukup banyak.
Performance
Untuk yang ini menurut saya pribadi Go lebih baik. Karena Go berjalan langsung di atas OS, tidak seperti Java yang berjalan di atas Virtual Machine. Walaupun Java VM di claim performance nya tidak jauh berbeda dengan native.
Banyak hal lagi yang bisa kita bahas disini, namun dari semua itu saya mengambil kesimpulan "Language just a tools to solve the problem". Yups, apapun bahasa pemrogramannya mereka semua adalah alat yang kita gunakan untuk memecahkan masalah.
Untuk saya pribadi Go merupakan salah satu bahasa pemrograman terbaik dan layak kita gunakan untuk production melihat performance cukup bagus.
Tutorial Go Programming Part 2
Pembahasan kali ini masih berkisar tentang pengenalan di bahasa pemrograman go. Dan tutorial kita ini melanjutkan tutorial kita sebelumnya, dimana yang akan kita bahas adalah :
Testing
Go menyediakan framework untuk testing dengan menggunakan go test.
Sebelumnya ada kondisi yang harus di perhatikan, yaitu :
Lihat, begitu mudahnya menggunakan Go. Dan hebatnya sendiri Go sudah build up dengan testing framework. Testing sangat di perlukan dalam proses Development.
Nantikan blog saya selanjutnya tentang go.
Thanks.
Referensi : http://golang.org/doc/code.html
- Create your library.
- Create a testing.
Tanpa berlama-lama mari kita mulai dengan :
Create your library
Yuk, kita buat library reverse word. Membalikkan kalimat dari kanan ke kiri.
Contoh : Ayunda Buwana menjadi anawuB adnuyA
Langkah-langkah yang harus di lakukan adalah :
Contoh : Ayunda Buwana menjadi anawuB adnuyA
Langkah-langkah yang harus di lakukan adalah :
- Buat folder stringutil
$ mkdir $GOPATH/src/yukibuwana.com/demo/stringutil
- Buat file dengan nama reverse.go
$ vi $GOPATH/src/yukibuwana.com/demo/stringutil/reverse.go
- Untuk code nya adalah
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
- Simpan file tersebut dan compile dengan cara
$ go install $GOPATH/src/yukibuwana.com/demo/stringutil
- Ubah filenya menjadi hello.go menjadi
package main
import (
"fmt"
"yukibuwana.com/demo/stringutil"
)
func main() {
s := "Ayunda Buwana"
fmt.Println(stringutil.Reverse(s))
}
- Untuk menjalankannya dengan cara
$ go install $GOPATH/src/yukibuwana.com/yuki/hello.go
- Dan hasilnya adalah
$ anawuB adnuyA
Testing
Go menyediakan framework untuk testing dengan menggunakan go test.
Sebelumnya ada kondisi yang harus di perhatikan, yaitu :
- Nama file harus di akhir _test.go
- Nama fungsi harus di awali dengan TestXXX
Tanpa berlama-lama lagi mari kita coba langkah-langkah berikut :
- Tambahkan file reverse_test.go
$ vi $GOPATH/src/yukibuwana.com/demo/stringutil/reverse_test.go
- Untuk code nya adalah
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
- Sedangkan cara menjalankannya adalah
$ go test $GOPATH/src/yukibuwana.com/demo/stringutil ok yukibuwana.com/demo/stringutil 0.004s
Nantikan blog saya selanjutnya tentang go.
Thanks.
Referensi : http://golang.org/doc/code.html
Subscribe to:
Posts (Atom)











