Showing posts with label go programming. Show all posts
Showing posts with label go programming. Show all posts

Saturday, June 23, 2018

Golang Rest API Menggunakan GIN Framework

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

Wednesday, June 15, 2016

Tutorial Golang Part 3

Masih membahas bahasa pemrograman Go, yang menlanjutkan meteri kami sebelumnya. Di blog ini kami akan membahas tentang :
  • Variable
  • Array
  • Struct

Variable

Variable adalah tempat kita menyimpan data. Dimana data tersebut akan kita gunakan lagi dan bisa berubah sesuai dengan kebutuhan kita. Berikut contoh penggunaan variable di Go :



Pada prinsipnya kita menggunakan var untuk menunjukan itu variable lalu di lanjutkan dengan nama variable, tipe data dan value awalnya (jika ada).

Untuk lebih ringkasnya deklarasi variable bisa menggukan cara berikut :
f := "short"
yang artinya kita tidak perlu menulis kata var dan tipe datanya.

Saya pribadi lebih suka menggukan cara ini karena lebih singkat.

Array

Array adalah variable yang didalamnya bisa terdiri dari 1 atau lebih element. Berikut contoh penggunaan array di Go :




Deklarasi array sama dengan variable, bedanya ada tambah [] untuk menentukan jumlah element yang ada.






Cara shortcut-nya juga hampir sama dengan variable dengan menggunakan :=

Sedangkan contoh disebelah adalah penggunaan array dengan 2 dimensi.





Struct

Struct adalah variable yang isi datanya lebih komplek. Kalau bisa kita analogikan struct hampir sama dengan Object di bahasa pemrograman OOP. Berikut contoh penggunaan struct di Go :


Cara deklarasinya dengan menggunakan keyword type lalu nama variablenya dan diakhir dengan keyword struct.












Disini ada simbol & yang artinya kita menggunakan pointer.





Sementara itu penjelasan singkat tentang Variable, Array dan Struct. Nanti kan blog-blog kami selanjutnya. I hope you enjoy it.









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:

  1. Gorilla Mux (http://www.gorillatoolkit.org/pkg/mux)
  2. Gin (https://gin-gonic.github.io/gin/)
  3. Atau, Martini (https://github.com/go-martini/martini)
Tapi, ada beberapa feature yang tidak disediakan oleh framework diatas, misalnya: 

  1. Session management
  2. Caching
  3. Logging
  4. Database access
  5. Asynchronous job queue
  6. Development and deployment tools
  7. MVC or other architectural pattern
Untuk mendapatkan beberapa feature diatas saya membutuhkan sebuah full framework yang sudah menginclude feature diatas. Berikut 2 framework yang sekarang sedang saya riset:

  1. Revel
  2. BeeGo

REVEL
Sebuah Web Framework seperti Django dan Rails. Memiliki banyak utility dan Patterns yang bisa digunakan untuk mendukung pembuatan aplikasi menggunakan GO.

Kelebihan.
  1. Memiliki tools revel. (tool yang bisa kita gunakan untuk mengenerate aplikasi go , menjalankan server dan lain-lain)
  2. Logging. (Revel memungkinkan kita untuk membuat log yang dipisahkan ke bebrapa type seperti: error, info, dll)
  3. Interceptors and filters

BEEGO

Sama halnya Web Framework seperti Revel, teteapi memiliki komunitas dan memiliki built-in feature yang lebih baik dari Revel.

Kelebihan.
  1. bee tool
  2. Filter middleware
  3. SQL/ORM support
  4. 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 :
  • 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
https://plugins.jetbrains.com/plugins/alpha/5047
  • 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.
  • 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 :
  • 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 :
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.go
Hasilnya 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

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 :
  1. Create your library.
  2. 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 :
  • 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 :
  1. Nama file harus di akhir _test.go
  2. 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
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

Saturday, March 14, 2015

Tutorial Go Programming Part 1

Sebelum kita memulai code di go, kita akan membahas apa itu go programming atau golang.
Golang (google language) adalah bahasa pemrograman yang diperkenalkan oleh Google pada tahun 2009. Golang bersifat :

  1. Open Source
  2. Aman dalam pengertian type-safe dan memory-safe.
  3. Cepat dalam kompilasi
  4. Hasil kompilasinya adalah binary
Dalam tutorial ini kita akan membahas :
  • Installation
  • Workspace and Environment
  • My First Program
  • Run the program

Ayo, saatnya kita memulai dengan :

Installation
  • Untuk installation kita bisa download di sini.

  • Langkah-langkahnya cukup jelas. Tinggal kita ikuti saja.

Workspace and Environtment
Workspace adalah tempat kita menempatkan source code kita. Di golang folder-foldernya harus sesuai dengan ketentuan. Berikut struktur foldernya :
bin/
        # binary file
pkg/
        # library file
src/
        # source code file

Setelah struktur folder diatas yang harus kita siapkan adalah setting environment, yaitu :

  • GOPATH, contoh : export GOPATH=/Users/yukibuwana/Go

Untuk setting environment lebih baik kita simpan di file .profile atau .bash_profile untuk sistem operasi linux.

My First Program
Tanpa berlama-lama lagi mari kita buat program pertama kita. Lakukan langkah-langkah berikut :
$ mkdir -pv $GOPATH/src/yukibuwana.com/demo/hello
Lalu buat file hello.go di dalam folder hello. Lalu tulis code berikut ini :
package main

import "fmt"

func main() {
 fmt.Printf("Hello, world.\n")
}
Jangan lupa simpan file tersebut.

Run the program
Sekarang saat-saat yang kita tunggu, yaitu menjalankan program pertama yang kita buat.
Untuk itu lakukan langkah-langkah berikut :
$ cd $GOPATH/src/yukibuwana.com/demo/hello
$ go install
Langkah diatas untuk meng-kompile program menjadi binary file. Untuk menjalankan programnya adalah
$ $GOPATH/bin/hello
Hello, world.
Untuk tutorial ini baru program "Hello, world." sederhana. Nantikan tutorial golang berikutnya dengan variasi golang lainnya.



Thanks

Referensi: http://golang.org/doc/install