SlideShare a Scribd company logo
1 of 29
Build simple REST API with
Go
28 January 2023
“First solve the problem, then
write the code”
Speakers
Mochammad Hanif
// (C&D)
https://www.linkedin.com/in/hanifz/
Letakkan foto
Agenda
1. What is REST API?
2. Tools REST API
3. Framework & Library Go
4. Structure Package/File Go
5. Build simple REST API with Go!
1. What is REST API?
What is REST API?
REST API adalah Representational State Transfer Application Programming
Interface yaitu standar arsitektur komunikasi untuk sistem yang terhubung melalui
jaringan, seperti internet. REST API menggunakan protokol HTTP (Hypertext
Transfer Protocol) untuk mengirimkan permintaan dan menerima respons, dan
menggunakan format data seperti JSON atau XML untuk menyampaikan data.
Di Golang, pengembangan REST API dapat dilakukan dengan menggunakan
framework seperti Gin, Echo, atau net/http yang sudah tersedia dalam bahasa
tersebut. Framework ini dapat digunakan untuk membuat endpoint dan
menangani permintaan HTTP seperti GET, POST, PUT, dan DELETE.
GET, POST, PUT, DELETE?
GET, POST, PUT, dan DELETE adalah metode atau tipe permintaan yang digunakan dalam protokol
HTTP (Hypertext Transfer Protocol). Masing-masing metode memiliki tujuan dan sifat yang berbeda:
● GET: digunakan untuk mengambil data dari server. Permintaan ini tidak mengubah data di server
dan dapat dilakukan berulang-ulang tanpa efek negatif.
● POST: digunakan untuk mengirimkan data baru ke server. Permintaan ini biasanya digunakan
untuk menambahkan data baru, seperti membuat akun baru atau menambahkan produk baru ke
toko online.
● PUT: digunakan untuk mengupdate data yang sudah ada di server. Permintaan ini biasanya
digunakan untuk mengubah data yang sudah ada, seperti mengubah nama akun atau mengubah
harga produk.
● DELETE: digunakan untuk menghapus data dari server. Permintaan ini biasanya digunakan untuk
menghapus data yang sudah tidak diperlukan lagi, seperti menghapus akun atau produk yang
sudah tidak dijual lagi.
Semua metode ini dapat digunakan dalam pengembangan REST API untuk menangani permintaan dari
client dan melakukan operasi yang sesuai pada server.
Response Status Server
Setiap metode permintaan HTTP (GET, POST, PUT, dan DELETE) akan menghasilkan respons
dari server yang berbeda-beda. Beberapa respons yang umum diterima dari masing-masing
metode adalah sebagai berikut:
● GET: Respons dari permintaan GET biasanya berupa data yang diminta dalam format
seperti JSON atau XML. Jika permintaan berhasil, server akan mengirimkan status HTTP
200 (OK) dan data yang diminta. Jika permintaan tidak valid, server akan mengirimkan
status HTTP 400 (Bad Request) atau 404 (Not Found) sesuai kondisi.
● POST: Respons dari permintaan POST biasanya berupa konfirmasi bahwa data yang
diterima telah disimpan dengan baik. Jika permintaan berhasil, server akan mengirimkan
status HTTP 201 (Created) dan informasi lain seperti ID dari data yang baru saja
ditambahkan. Jika permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad
Request) atau 422 (Unprocessable Entity) sesuai kondisi.
Response Status Server
● PUT: Respons dari permintaan PUT biasanya berupa konfirmasi bahwa data yang diterima
telah diperbarui dengan baik. Jika permintaan berhasil, server akan mengirimkan status
HTTP 200 (OK) atau 204 (No Content) dan informasi lain seperti ID dari data yang baru
saja diperbarui. Jika permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad
Request) atau 404 (Not Found) sesuai kondisi.
● DELETE: Respons dari permintaan DELETE biasanya berupa konfirmasi bahwa data yang
diminta telah dihapus. Jika permintaan berhasil, server akan mengirimkan status HTTP 200
(OK) atau 204 (No Content) dan informasi lain seperti ID dari data yang dihapus. Jika
permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad Request) atau 404
(Not Found) sesuai kondisi.
Perlu diingat bahwa respons yang diterima dari server dapat berbeda sesuai dengan
implementasi dan logika aplikasi yang digunakan.
2. Tools REST API
Tools REST API
Untuk membuat REST API di Golang, beberapa tools yang diperlukan antara lain:
● Golang: Bahasa pemrograman yang digunakan untuk menulis kode aplikasi.
● Text editor atau IDE: Sebuah text editor atau IDE seperti Visual Studio Code, GoLand, atau
Sublime Text digunakan untuk menulis dan mengedit kode aplikasi.
● Postman: digunakan untuk melakukan testing pada endpoint yang dibuat.
● Framework: Framework seperti Gin, Echo, atau net/http digunakan untuk membuat
endpoint dan menangani permintaan HTTP.
● Database: Sebuah database seperti MySQL, PostgreSQL, atau MongoDB digunakan untuk
menyimpan data aplikasi.
● ORM (Object-Relational Mapping) atau ODM (Object-Document Mapping): Sebuah
library seperti Gorm, digunakan untuk mengkoneksikan aplikasi ke database dan melakukan
operasi CRUD (Create, Read, Update, Delete) pada data.
3. Framework & Library Go
Framework Go
Framework Go adalah sebuah kumpulan modul dan library yang disediakan untuk membantu developer
dalam pengembangan aplikasi dengan menyediakan fitur-fitur yang sudah terintegrasi dan dapat
digunakan sebagai acuan dalam pengembangan aplikasi.
Framework Go dapat digunakan dalam pembuatan REST API untuk membantu developer dalam
menangani permintaan HTTP dan menyediakan fitur-fitur yang dibutuhkan untuk pengembangan REST
API. Beberapa framework Go yang populer digunakan untuk pembuatan REST API adalah:
● Gin: Framework web yang ringan dan cepat yang menyediakan fitur routing, middleware, dan
templating yang dibutuhkan untuk pengembangan REST API.
● Echo: Framework web yang menyediakan fitur routing, middleware, dan templating yang
dibutuhkan untuk pengembangan REST API dengan performa yang baik.
● net/http: Package bawaan Go yang digunakan untuk menangani permintaan HTTP dan
menyediakan fitur yang dibutuhkan untuk pengembangan REST API.
Selain itu, ada juga library HTTP Router seperti Gorilla Mux, Chi, atau httpRouter yang dapat digunakan
untuk menangani routing pada REST API. Perlu diingat bahwa pemilihan framework atau library yang
digunakan akan tergantung pada kebutuhan dan preferensi developer.
Framework Gin
Gin adalah sebuah framework web yang digunakan dalam pengembangan aplikasi web dengan Go. Gin dikenal
dengan performa yang cepat dan fitur-fitur yang dibutuhkan dalam pembuatan REST API.
Beberapa fitur yang ditawarkan oleh Gin antara lain:
● Routing: memungkinkan developer untuk menangani permintaan HTTP dengan menentukan endpoint
yang sesuai.
● Middleware: memungkinkan developer untuk menambahkan logika sebelum atau sesudah operasi
CRUD.
● Grouping: memungkinkan developer untuk mengelompokkan endpoint yang berhubungan.
● Context: memungkinkan developer untuk menyimpan data yang dibutuhkan oleh endpoint.
Dalam pembuatan REST API, Gin dapat digunakan untuk membuat endpoint yang dibutuhkan, menangani
permintaan HTTP, dan menambahkan logika yang diperlukan dengan menggunakan middleware. Gin juga dapat
digunakan dengan ORM seperti Gorm untuk memudahkan dalam melakukan operasi CRUD pada data.
Gin sendiri sangat populer digunakan dalam pengembangan REST API dikarenakan performa yang cepat dan
fitur-fitur yang ditawarkan, namun perlu diingat bahwa pemilihan framework akan tergantung pada kebutuhan
dan preferensi developer.
Database
Database adalah komponen penting dalam pengembangan REST API, digunakan untuk menyimpan,
mengambil, dan memodifikasi data yang dibutuhkan oleh aplikasi. Beberapa database yang populer digunakan
dalam pengembangan REST API dengan Go adalah:
● MySQL: Database relasional yang populer dan digunakan dalam berbagai jenis aplikasi. Dapat digunakan
dengan Go melalui library seperti go-sql-driver atau gorm.
● PostgreSQL: Database relasional yang digunakan dalam aplikasi yang memerlukan kinerja yang baik dan
fitur-fitur yang canggih. Dapat digunakan dengan Go melalui library seperti pq atau gorm.
● MongoDB: Database NoSQL yang digunakan dalam aplikasi yang menangani data non-relasional. Dapat
digunakan dengan Go melalui library seperti mgo atau mongodb-go-driver
● SQLite: Database relasional yang digunakan untuk pengembangan aplikasi yang memerlukan portabilitas
tinggi. Dapat digunakan dengan Go melalui library seperti go-sqlite3
● Redis: Database key-value yang digunakan dalam aplikasi yang memerlukan kinerja yang baik dan fitur-
fitur caching. Dapat digunakan dengan Go melalui library seperti redigo atau go-redis
Perlu diingat bahwa pemilihan database yang digunakan dalam pengembangan REST API akan tergantung
pada kebutuhan dan karakteristik data yang akan ditangani oleh aplikasi. Beberapa faktor yang perlu
dipertimbangkan dalam memilih database yang sesuai untuk aplikasi REST API adalah skala aplikasi, kinerja,
keamanan, dan fitur yang dibutuhkan.
Library GORM
Gorm (Golang ORM) adalah sebuah library ORM (Object-Relational Mapping) yang digunakan untuk
mengkoneksikan aplikasi Go ke database dan melakukan operasi CRUD (Create, Read, Update, Delete) pada
data. Gorm dapat digunakan dengan berbagai jenis database seperti MySQL, PostgreSQL, SQLite, dan lainnya.
Dalam pembuatan REST API, Gorm dapat digunakan untuk memudahkan dalam melakukan operasi CRUD
pada data yang digunakan oleh aplikasi. Dengan Gorm, developer dapat menulis kode Go yang lebih sederhana
dan terstruktur untuk melakukan operasi pada data, sehingga memudahkan dalam pengembangan aplikasi.
Beberapa fitur yang ditawarkan oleh Gorm antara lain:
● Auto migration: memungkinkan developer untuk meng-generate tabel dari struct Go Association :
memungkinkan developer untuk mengatur relasi antar tabel dalam database.
● Callback: memungkinkan developer untuk menambahkan logika sebelum atau sesudah operasi CRUD.
● Preloading: memungkinkan developer untuk mengambil data dari beberapa tabel dalam satu query.
Perlu diingat bahwa Gorm akan menambahkan overhead pada aplikasi karena harus melakukan mapping data
dari tabel ke struct, sehingga developer harus mempertimbangkan kebutuhan dan karakteristik aplikasi yang
akan dikembangkan.
Library Godotenv
Godotenv adalah sebuah library Golang yang digunakan untuk membaca file .env (environment)
pada aplikasi. File .env digunakan untuk menyimpan variabel-variabel environment seperti nama
user, password, host, port, dll. yang digunakan dalam aplikasi.
Dengan menggunakan Godotenv, kita dapat membaca nilai dari variabel-variabel tersebut pada
saat aplikasi dijalankan, sehingga kita tidak perlu mengubah kode aplikasi setiap kali ada
perubahan pada variabel-variabel tersebut.
Dengan menggunakan Godotenv, kita dapat membuat aplikasi yang dapat di-deploy dengan
mudah dan aman, karena tidak perlu menyimpan informasi sensitif dalam kode aplikasi.
4. Structure Package/File Go
Structure Package/File Go
Struktur folder dalam pembuatan REST API dengan Go dapat berbeda-beda tergantung pada kebutuhan
dan preferensi developer. Namun, ada beberapa konvensi yang umum digunakan dalam pengembangan
aplikasi Go, yaitu:
● main package: package ini berisi file main yang akan dijalankan saat aplikasi di-run.
● config package: package ini berisi file-file yang digunakan untuk mengkonfigurasi aplikasi, seperti
koneksi ke database, pengaturan environment, dll.
● models package: package ini berisi struct yang digunakan sebagai model dari data yang
digunakan dalam aplikasi.
● routes package: package ini berisi file yang digunakan untuk mengatur routing dari aplikasi.
● controllers package: package ini berisi file yang digunakan untuk menangani permintaan dari
client dan melakukan operasi CRUD pada data.
Struktur folder ini dapat digunakan sebagai acuan dalam pengembangan REST API dengan Go, namun
perlu diingat bahwa struktur folder dapat berbeda-beda tergantung pada kebutuhan dan preferensi
developer.
5. Build simple REST API with Go!
Installation Framework & Library
● Go mod
○ go mod init <namefolder>
● Gin
○ go get -u github.com/gin-gonic/gin
● GORM
○ go get -u gorm.io/gorm
○ go get -u gorm.io/driver/mysql
● Godotenv
○ go get github.com/joho/godotenv
.env
config/db.go
Pada package config, file db.go digunakan untuk mengatur koneksi
ke database. Koneksi ke database dibuat dengan menggunakan
Gorm MySQL. Konfigurasi koneksi seperti nama user, password,
host, port, dan nama database diambil dari environment variable.
models/people.go
Pada package models, file people.go digunakan untuk
mendefinisikan struct People yang akan digunakan sebagai
model data dalam aplikasi. Struktur People mengandung field-
field yang dibutuhkan dalam aplikasi, seperti name, email,
university, hobbies, dan portfolio. Gorm.Model digunakan untuk
menambahkan field-field default seperti ID, created_at,
updated_at, dan deleted_at.
controllers/people.go
controllers/people.go
Pada package controllers, file people.go digunakan untuk mengatur logika dari aplikasi. Fungsi-fungsi
yang ada di sini digunakan untuk menangani request dari routes yang didefinisikan sebelumnya dan
mengatur respon yang dikirim ke client. Itulah contoh codingan REST API sederhana menggunakan
Gorm dan Gin dengan struktur folder yang telah dijelaskan sebelumnya. Perlu diingat bahwa ini hanyalah
sebuah contoh sederhana dan dalam pengembangan aplikasi yang sesungguhnya perlu
diimplementasikan fitur-fitur yang dibutuhkan sesuai dengan kebutuhan aplikasi, seperti validasi, logging,
dll.
routes/people.go
Pada package routes, file people.go digunakan untuk mengatur
routing dari aplikasi. Routing didefinisikan dengan menggunakan
Gin dan mengarahkan request ke controller yang sesuai. Pada
contoh ini, route '/peoples’ digunakan untuk mengatur routing dari
endpoint user.
main.go
Pada package main, file main.go akan dijalankan ketika aplikasi di run.
Koneksi ke database dibuat dan di-handle dengan package config dan
migrasi tabel dilakukan dengan Gorm. Kemudian router dari Gin
dikonfigurasi dan dijalankan pada port 3000.
Thank you for joining!
… and see you !

More Related Content

Similar to REST API GO

Perkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan website
Perkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan websitePerkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan website
Perkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan websiteNepri Anto
 
Pengenalan web design dan programming
Pengenalan web design dan programmingPengenalan web design dan programming
Pengenalan web design dan programmingFrisianlllllllFlag
 
Tugas rekweb 2 individu
Tugas rekweb 2 individuTugas rekweb 2 individu
Tugas rekweb 2 individuFani Heryati
 
3613 7943-1-pb
3613 7943-1-pb3613 7943-1-pb
3613 7943-1-pbakoeintan
 
World wide web
World wide webWorld wide web
World wide webpeces123
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesiakaniadona
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesiakaniadona
 
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptPemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptAbdurRozak19
 
Jeni Web Programming Bab 1 Pengenalan Pemrograman Web
Jeni Web Programming Bab 1 Pengenalan Pemrograman WebJeni Web Programming Bab 1 Pengenalan Pemrograman Web
Jeni Web Programming Bab 1 Pengenalan Pemrograman WebIndividual Consultants
 
Jeni web programming-bab 1-pengenalan pemrograman web
Jeni web programming-bab 1-pengenalan pemrograman webJeni web programming-bab 1-pengenalan pemrograman web
Jeni web programming-bab 1-pengenalan pemrograman webSejahtera Affif
 
Webprograming
WebprogramingWebprograming
Webprogramingandreboys
 
Jobsheet Pemrograman
Jobsheet Pemrograman Jobsheet Pemrograman
Jobsheet Pemrograman Rika Pertiwi
 

Similar to REST API GO (20)

Perkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan website
Perkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan websitePerkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan website
Perkenalan dengan-codeigniter-framework LPK NAURA Kursus Komputer dan website
 
Module desain web
Module desain webModule desain web
Module desain web
 
Pengenalan web design dan programming
Pengenalan web design dan programmingPengenalan web design dan programming
Pengenalan web design dan programming
 
API by Sandi Hermawan
API by Sandi HermawanAPI by Sandi Hermawan
API by Sandi Hermawan
 
Dasar web-dan-html
Dasar web-dan-htmlDasar web-dan-html
Dasar web-dan-html
 
Tugas rekweb 2 individu
Tugas rekweb 2 individuTugas rekweb 2 individu
Tugas rekweb 2 individu
 
3613 7943-1-pb
3613 7943-1-pb3613 7943-1-pb
3613 7943-1-pb
 
World wide web
World wide webWorld wide web
World wide web
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesia
 
Ci indonesia
Ci indonesiaCi indonesia
Ci indonesia
 
API
APIAPI
API
 
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.pptPemrograman-Berbasis-Web-Pertemuan-1.ppt
Pemrograman-Berbasis-Web-Pertemuan-1.ppt
 
Jeni Web Programming Bab 1 Pengenalan Pemrograman Web
Jeni Web Programming Bab 1 Pengenalan Pemrograman WebJeni Web Programming Bab 1 Pengenalan Pemrograman Web
Jeni Web Programming Bab 1 Pengenalan Pemrograman Web
 
Jeni web programming-bab 1-pengenalan pemrograman web
Jeni web programming-bab 1-pengenalan pemrograman webJeni web programming-bab 1-pengenalan pemrograman web
Jeni web programming-bab 1-pengenalan pemrograman web
 
Tugas 1
Tugas 1Tugas 1
Tugas 1
 
Tugas 1
Tugas 1Tugas 1
Tugas 1
 
W E B P R O G R A M M I N G
W E B  P R O G R A M M I N GW E B  P R O G R A M M I N G
W E B P R O G R A M M I N G
 
Webprograming
WebprogramingWebprograming
Webprograming
 
Web programming
Web programmingWeb programming
Web programming
 
Jobsheet Pemrograman
Jobsheet Pemrograman Jobsheet Pemrograman
Jobsheet Pemrograman
 

More from GDSC2

Info Session_ GDSC Lead Application 2023.pptx
Info Session_ GDSC Lead Application 2023.pptxInfo Session_ GDSC Lead Application 2023.pptx
Info Session_ GDSC Lead Application 2023.pptxGDSC2
 
#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptxGDSC2
 
#4 Design Thinking Prototype Usability Testing.pptx
#4 Design Thinking Prototype Usability Testing.pptx#4 Design Thinking Prototype Usability Testing.pptx
#4 Design Thinking Prototype Usability Testing.pptxGDSC2
 
#5 Introduction Fundamental Jetpack Compose.pptx
#5 Introduction Fundamental Jetpack Compose.pptx#5 Introduction Fundamental Jetpack Compose.pptx
#5 Introduction Fundamental Jetpack Compose.pptxGDSC2
 
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptxGDSC2
 
#5 Design Guidline & UI Responsive.pptx
#5 Design Guidline & UI Responsive.pptx#5 Design Guidline & UI Responsive.pptx
#5 Design Guidline & UI Responsive.pptxGDSC2
 
#3 Design Thinking Ideate.pptx
#3 Design Thinking Ideate.pptx#3 Design Thinking Ideate.pptx
#3 Design Thinking Ideate.pptxGDSC2
 
#3 OOP.pptx
#3 OOP.pptx#3 OOP.pptx
#3 OOP.pptxGDSC2
 
#3 Introduction Control Flow & Loop in Kotlin.pptx
#3 Introduction Control Flow & Loop in Kotlin.pptx#3 Introduction Control Flow & Loop in Kotlin.pptx
#3 Introduction Control Flow & Loop in Kotlin.pptxGDSC2
 
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And DefineStudy Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And DefineGDSC2
 
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and SemanticsPPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and SemanticsGDSC2
 
#2 Introduction Operator in Kotlin.pptx
#2 Introduction Operator in Kotlin.pptx#2 Introduction Operator in Kotlin.pptx
#2 Introduction Operator in Kotlin.pptxGDSC2
 
#1 Introduction To UIUX Design.pptx
#1 Introduction To UIUX Design.pptx#1 Introduction To UIUX Design.pptx
#1 Introduction To UIUX Design.pptxGDSC2
 
#1 Introduction Go.pptx
#1 Introduction Go.pptx#1 Introduction Go.pptx
#1 Introduction Go.pptxGDSC2
 
#1 Introduction Kotlin.pptx
#1 Introduction Kotlin.pptx#1 Introduction Kotlin.pptx
#1 Introduction Kotlin.pptxGDSC2
 
The Future of Modern Android Development.pptx
The Future of Modern Android Development.pptxThe Future of Modern Android Development.pptx
The Future of Modern Android Development.pptxGDSC2
 
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptxInfo Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptxGDSC2
 

More from GDSC2 (17)

Info Session_ GDSC Lead Application 2023.pptx
Info Session_ GDSC Lead Application 2023.pptxInfo Session_ GDSC Lead Application 2023.pptx
Info Session_ GDSC Lead Application 2023.pptx
 
#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx#4 Introduction Functional Programming in Kotlin.pptx
#4 Introduction Functional Programming in Kotlin.pptx
 
#4 Design Thinking Prototype Usability Testing.pptx
#4 Design Thinking Prototype Usability Testing.pptx#4 Design Thinking Prototype Usability Testing.pptx
#4 Design Thinking Prototype Usability Testing.pptx
 
#5 Introduction Fundamental Jetpack Compose.pptx
#5 Introduction Fundamental Jetpack Compose.pptx#5 Introduction Fundamental Jetpack Compose.pptx
#5 Introduction Fundamental Jetpack Compose.pptx
 
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
2023 Google Solution Challenge Kickoff_ From Idea to Execution.pptx
 
#5 Design Guidline & UI Responsive.pptx
#5 Design Guidline & UI Responsive.pptx#5 Design Guidline & UI Responsive.pptx
#5 Design Guidline & UI Responsive.pptx
 
#3 Design Thinking Ideate.pptx
#3 Design Thinking Ideate.pptx#3 Design Thinking Ideate.pptx
#3 Design Thinking Ideate.pptx
 
#3 OOP.pptx
#3 OOP.pptx#3 OOP.pptx
#3 OOP.pptx
 
#3 Introduction Control Flow & Loop in Kotlin.pptx
#3 Introduction Control Flow & Loop in Kotlin.pptx#3 Introduction Control Flow & Loop in Kotlin.pptx
#3 Introduction Control Flow & Loop in Kotlin.pptx
 
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And DefineStudy Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
Study Jam - Batch 1 UI/UX #2: Design Thinking - Empathize And Define
 
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and SemanticsPPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
PPT Study Jam - Batch 1 Golang #2: Basics of Go Syntax and Semantics
 
#2 Introduction Operator in Kotlin.pptx
#2 Introduction Operator in Kotlin.pptx#2 Introduction Operator in Kotlin.pptx
#2 Introduction Operator in Kotlin.pptx
 
#1 Introduction To UIUX Design.pptx
#1 Introduction To UIUX Design.pptx#1 Introduction To UIUX Design.pptx
#1 Introduction To UIUX Design.pptx
 
#1 Introduction Go.pptx
#1 Introduction Go.pptx#1 Introduction Go.pptx
#1 Introduction Go.pptx
 
#1 Introduction Kotlin.pptx
#1 Introduction Kotlin.pptx#1 Introduction Kotlin.pptx
#1 Introduction Kotlin.pptx
 
The Future of Modern Android Development.pptx
The Future of Modern Android Development.pptxThe Future of Modern Android Development.pptx
The Future of Modern Android Development.pptx
 
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptxInfo Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
Info Session #1_ Introducing GDSC ITTP & Meet our Member.pptx
 

Recently uploaded

Demonstrasi Kontekstual Modul 1.2. pdf
Demonstrasi Kontekstual  Modul 1.2.  pdfDemonstrasi Kontekstual  Modul 1.2.  pdf
Demonstrasi Kontekstual Modul 1.2. pdfvebronialite32
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASKurniawan Dirham
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggeraksupriadi611
 
04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau tripletMelianaJayasaputra
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...MarwanAnugrah
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxFuzaAnggriana
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5ssuserd52993
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASreskosatrio1
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docxbkandrisaputra
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5KIKI TRISNA MUKTI
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDmawan5982
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxawaldarmawan3
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxWirionSembiring2
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxIgitNuryana13
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BAbdiera
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxSyaimarChandra1
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfDimanWr1
 

Recently uploaded (20)

Demonstrasi Kontekstual Modul 1.2. pdf
Demonstrasi Kontekstual  Modul 1.2.  pdfDemonstrasi Kontekstual  Modul 1.2.  pdf
Demonstrasi Kontekstual Modul 1.2. pdf
 
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATASMATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
MATERI EKOSISTEM UNTUK SEKOLAH MENENGAH ATAS
 
Aksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru PenggerakAksi Nyata Modul 1.1 Calon Guru Penggerak
Aksi Nyata Modul 1.1 Calon Guru Penggerak
 
04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet04-Gemelli.- kehamilan ganda- duo atau triplet
04-Gemelli.- kehamilan ganda- duo atau triplet
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...Wawasan Nusantara  sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
Wawasan Nusantara sebagai satu kesatuan, politik, ekonomi, sosial, budaya, d...
 
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptxDESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
DESAIN MEDIA PEMBELAJARAN BAHASA INDONESIA BERBASIS DIGITAL.pptx
 
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
JAWAPAN BAB 1 DAN BAB 2 SAINS TINGKATAN 5
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
 
Lembar Observasi Pembelajaran di Kelas.docx
Lembar Observasi Pembelajaran di  Kelas.docxLembar Observasi Pembelajaran di  Kelas.docx
Lembar Observasi Pembelajaran di Kelas.docx
 
Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5Materi Strategi Perubahan dibuat oleh kelompok 5
Materi Strategi Perubahan dibuat oleh kelompok 5
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SD
 
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptxKONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
KONSEP KEBUTUHAN AKTIVITAS DAN LATIHAN.pptx
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
 
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptxPaparan Refleksi Lokakarya program sekolah penggerak.pptx
Paparan Refleksi Lokakarya program sekolah penggerak.pptx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptxPrakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
Prakarsa Perubahan dengan Kanvas ATAP & BAGJA.pptx
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
 

REST API GO

  • 1.
  • 2. Build simple REST API with Go 28 January 2023
  • 3. “First solve the problem, then write the code” Speakers Mochammad Hanif // (C&D) https://www.linkedin.com/in/hanifz/ Letakkan foto
  • 4. Agenda 1. What is REST API? 2. Tools REST API 3. Framework & Library Go 4. Structure Package/File Go 5. Build simple REST API with Go!
  • 5. 1. What is REST API?
  • 6. What is REST API? REST API adalah Representational State Transfer Application Programming Interface yaitu standar arsitektur komunikasi untuk sistem yang terhubung melalui jaringan, seperti internet. REST API menggunakan protokol HTTP (Hypertext Transfer Protocol) untuk mengirimkan permintaan dan menerima respons, dan menggunakan format data seperti JSON atau XML untuk menyampaikan data. Di Golang, pengembangan REST API dapat dilakukan dengan menggunakan framework seperti Gin, Echo, atau net/http yang sudah tersedia dalam bahasa tersebut. Framework ini dapat digunakan untuk membuat endpoint dan menangani permintaan HTTP seperti GET, POST, PUT, dan DELETE.
  • 7. GET, POST, PUT, DELETE? GET, POST, PUT, dan DELETE adalah metode atau tipe permintaan yang digunakan dalam protokol HTTP (Hypertext Transfer Protocol). Masing-masing metode memiliki tujuan dan sifat yang berbeda: ● GET: digunakan untuk mengambil data dari server. Permintaan ini tidak mengubah data di server dan dapat dilakukan berulang-ulang tanpa efek negatif. ● POST: digunakan untuk mengirimkan data baru ke server. Permintaan ini biasanya digunakan untuk menambahkan data baru, seperti membuat akun baru atau menambahkan produk baru ke toko online. ● PUT: digunakan untuk mengupdate data yang sudah ada di server. Permintaan ini biasanya digunakan untuk mengubah data yang sudah ada, seperti mengubah nama akun atau mengubah harga produk. ● DELETE: digunakan untuk menghapus data dari server. Permintaan ini biasanya digunakan untuk menghapus data yang sudah tidak diperlukan lagi, seperti menghapus akun atau produk yang sudah tidak dijual lagi. Semua metode ini dapat digunakan dalam pengembangan REST API untuk menangani permintaan dari client dan melakukan operasi yang sesuai pada server.
  • 8. Response Status Server Setiap metode permintaan HTTP (GET, POST, PUT, dan DELETE) akan menghasilkan respons dari server yang berbeda-beda. Beberapa respons yang umum diterima dari masing-masing metode adalah sebagai berikut: ● GET: Respons dari permintaan GET biasanya berupa data yang diminta dalam format seperti JSON atau XML. Jika permintaan berhasil, server akan mengirimkan status HTTP 200 (OK) dan data yang diminta. Jika permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad Request) atau 404 (Not Found) sesuai kondisi. ● POST: Respons dari permintaan POST biasanya berupa konfirmasi bahwa data yang diterima telah disimpan dengan baik. Jika permintaan berhasil, server akan mengirimkan status HTTP 201 (Created) dan informasi lain seperti ID dari data yang baru saja ditambahkan. Jika permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad Request) atau 422 (Unprocessable Entity) sesuai kondisi.
  • 9. Response Status Server ● PUT: Respons dari permintaan PUT biasanya berupa konfirmasi bahwa data yang diterima telah diperbarui dengan baik. Jika permintaan berhasil, server akan mengirimkan status HTTP 200 (OK) atau 204 (No Content) dan informasi lain seperti ID dari data yang baru saja diperbarui. Jika permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad Request) atau 404 (Not Found) sesuai kondisi. ● DELETE: Respons dari permintaan DELETE biasanya berupa konfirmasi bahwa data yang diminta telah dihapus. Jika permintaan berhasil, server akan mengirimkan status HTTP 200 (OK) atau 204 (No Content) dan informasi lain seperti ID dari data yang dihapus. Jika permintaan tidak valid, server akan mengirimkan status HTTP 400 (Bad Request) atau 404 (Not Found) sesuai kondisi. Perlu diingat bahwa respons yang diterima dari server dapat berbeda sesuai dengan implementasi dan logika aplikasi yang digunakan.
  • 11. Tools REST API Untuk membuat REST API di Golang, beberapa tools yang diperlukan antara lain: ● Golang: Bahasa pemrograman yang digunakan untuk menulis kode aplikasi. ● Text editor atau IDE: Sebuah text editor atau IDE seperti Visual Studio Code, GoLand, atau Sublime Text digunakan untuk menulis dan mengedit kode aplikasi. ● Postman: digunakan untuk melakukan testing pada endpoint yang dibuat. ● Framework: Framework seperti Gin, Echo, atau net/http digunakan untuk membuat endpoint dan menangani permintaan HTTP. ● Database: Sebuah database seperti MySQL, PostgreSQL, atau MongoDB digunakan untuk menyimpan data aplikasi. ● ORM (Object-Relational Mapping) atau ODM (Object-Document Mapping): Sebuah library seperti Gorm, digunakan untuk mengkoneksikan aplikasi ke database dan melakukan operasi CRUD (Create, Read, Update, Delete) pada data.
  • 12. 3. Framework & Library Go
  • 13. Framework Go Framework Go adalah sebuah kumpulan modul dan library yang disediakan untuk membantu developer dalam pengembangan aplikasi dengan menyediakan fitur-fitur yang sudah terintegrasi dan dapat digunakan sebagai acuan dalam pengembangan aplikasi. Framework Go dapat digunakan dalam pembuatan REST API untuk membantu developer dalam menangani permintaan HTTP dan menyediakan fitur-fitur yang dibutuhkan untuk pengembangan REST API. Beberapa framework Go yang populer digunakan untuk pembuatan REST API adalah: ● Gin: Framework web yang ringan dan cepat yang menyediakan fitur routing, middleware, dan templating yang dibutuhkan untuk pengembangan REST API. ● Echo: Framework web yang menyediakan fitur routing, middleware, dan templating yang dibutuhkan untuk pengembangan REST API dengan performa yang baik. ● net/http: Package bawaan Go yang digunakan untuk menangani permintaan HTTP dan menyediakan fitur yang dibutuhkan untuk pengembangan REST API. Selain itu, ada juga library HTTP Router seperti Gorilla Mux, Chi, atau httpRouter yang dapat digunakan untuk menangani routing pada REST API. Perlu diingat bahwa pemilihan framework atau library yang digunakan akan tergantung pada kebutuhan dan preferensi developer.
  • 14. Framework Gin Gin adalah sebuah framework web yang digunakan dalam pengembangan aplikasi web dengan Go. Gin dikenal dengan performa yang cepat dan fitur-fitur yang dibutuhkan dalam pembuatan REST API. Beberapa fitur yang ditawarkan oleh Gin antara lain: ● Routing: memungkinkan developer untuk menangani permintaan HTTP dengan menentukan endpoint yang sesuai. ● Middleware: memungkinkan developer untuk menambahkan logika sebelum atau sesudah operasi CRUD. ● Grouping: memungkinkan developer untuk mengelompokkan endpoint yang berhubungan. ● Context: memungkinkan developer untuk menyimpan data yang dibutuhkan oleh endpoint. Dalam pembuatan REST API, Gin dapat digunakan untuk membuat endpoint yang dibutuhkan, menangani permintaan HTTP, dan menambahkan logika yang diperlukan dengan menggunakan middleware. Gin juga dapat digunakan dengan ORM seperti Gorm untuk memudahkan dalam melakukan operasi CRUD pada data. Gin sendiri sangat populer digunakan dalam pengembangan REST API dikarenakan performa yang cepat dan fitur-fitur yang ditawarkan, namun perlu diingat bahwa pemilihan framework akan tergantung pada kebutuhan dan preferensi developer.
  • 15. Database Database adalah komponen penting dalam pengembangan REST API, digunakan untuk menyimpan, mengambil, dan memodifikasi data yang dibutuhkan oleh aplikasi. Beberapa database yang populer digunakan dalam pengembangan REST API dengan Go adalah: ● MySQL: Database relasional yang populer dan digunakan dalam berbagai jenis aplikasi. Dapat digunakan dengan Go melalui library seperti go-sql-driver atau gorm. ● PostgreSQL: Database relasional yang digunakan dalam aplikasi yang memerlukan kinerja yang baik dan fitur-fitur yang canggih. Dapat digunakan dengan Go melalui library seperti pq atau gorm. ● MongoDB: Database NoSQL yang digunakan dalam aplikasi yang menangani data non-relasional. Dapat digunakan dengan Go melalui library seperti mgo atau mongodb-go-driver ● SQLite: Database relasional yang digunakan untuk pengembangan aplikasi yang memerlukan portabilitas tinggi. Dapat digunakan dengan Go melalui library seperti go-sqlite3 ● Redis: Database key-value yang digunakan dalam aplikasi yang memerlukan kinerja yang baik dan fitur- fitur caching. Dapat digunakan dengan Go melalui library seperti redigo atau go-redis Perlu diingat bahwa pemilihan database yang digunakan dalam pengembangan REST API akan tergantung pada kebutuhan dan karakteristik data yang akan ditangani oleh aplikasi. Beberapa faktor yang perlu dipertimbangkan dalam memilih database yang sesuai untuk aplikasi REST API adalah skala aplikasi, kinerja, keamanan, dan fitur yang dibutuhkan.
  • 16. Library GORM Gorm (Golang ORM) adalah sebuah library ORM (Object-Relational Mapping) yang digunakan untuk mengkoneksikan aplikasi Go ke database dan melakukan operasi CRUD (Create, Read, Update, Delete) pada data. Gorm dapat digunakan dengan berbagai jenis database seperti MySQL, PostgreSQL, SQLite, dan lainnya. Dalam pembuatan REST API, Gorm dapat digunakan untuk memudahkan dalam melakukan operasi CRUD pada data yang digunakan oleh aplikasi. Dengan Gorm, developer dapat menulis kode Go yang lebih sederhana dan terstruktur untuk melakukan operasi pada data, sehingga memudahkan dalam pengembangan aplikasi. Beberapa fitur yang ditawarkan oleh Gorm antara lain: ● Auto migration: memungkinkan developer untuk meng-generate tabel dari struct Go Association : memungkinkan developer untuk mengatur relasi antar tabel dalam database. ● Callback: memungkinkan developer untuk menambahkan logika sebelum atau sesudah operasi CRUD. ● Preloading: memungkinkan developer untuk mengambil data dari beberapa tabel dalam satu query. Perlu diingat bahwa Gorm akan menambahkan overhead pada aplikasi karena harus melakukan mapping data dari tabel ke struct, sehingga developer harus mempertimbangkan kebutuhan dan karakteristik aplikasi yang akan dikembangkan.
  • 17. Library Godotenv Godotenv adalah sebuah library Golang yang digunakan untuk membaca file .env (environment) pada aplikasi. File .env digunakan untuk menyimpan variabel-variabel environment seperti nama user, password, host, port, dll. yang digunakan dalam aplikasi. Dengan menggunakan Godotenv, kita dapat membaca nilai dari variabel-variabel tersebut pada saat aplikasi dijalankan, sehingga kita tidak perlu mengubah kode aplikasi setiap kali ada perubahan pada variabel-variabel tersebut. Dengan menggunakan Godotenv, kita dapat membuat aplikasi yang dapat di-deploy dengan mudah dan aman, karena tidak perlu menyimpan informasi sensitif dalam kode aplikasi.
  • 19. Structure Package/File Go Struktur folder dalam pembuatan REST API dengan Go dapat berbeda-beda tergantung pada kebutuhan dan preferensi developer. Namun, ada beberapa konvensi yang umum digunakan dalam pengembangan aplikasi Go, yaitu: ● main package: package ini berisi file main yang akan dijalankan saat aplikasi di-run. ● config package: package ini berisi file-file yang digunakan untuk mengkonfigurasi aplikasi, seperti koneksi ke database, pengaturan environment, dll. ● models package: package ini berisi struct yang digunakan sebagai model dari data yang digunakan dalam aplikasi. ● routes package: package ini berisi file yang digunakan untuk mengatur routing dari aplikasi. ● controllers package: package ini berisi file yang digunakan untuk menangani permintaan dari client dan melakukan operasi CRUD pada data. Struktur folder ini dapat digunakan sebagai acuan dalam pengembangan REST API dengan Go, namun perlu diingat bahwa struktur folder dapat berbeda-beda tergantung pada kebutuhan dan preferensi developer.
  • 20. 5. Build simple REST API with Go!
  • 21. Installation Framework & Library ● Go mod ○ go mod init <namefolder> ● Gin ○ go get -u github.com/gin-gonic/gin ● GORM ○ go get -u gorm.io/gorm ○ go get -u gorm.io/driver/mysql ● Godotenv ○ go get github.com/joho/godotenv
  • 22. .env
  • 23. config/db.go Pada package config, file db.go digunakan untuk mengatur koneksi ke database. Koneksi ke database dibuat dengan menggunakan Gorm MySQL. Konfigurasi koneksi seperti nama user, password, host, port, dan nama database diambil dari environment variable.
  • 24. models/people.go Pada package models, file people.go digunakan untuk mendefinisikan struct People yang akan digunakan sebagai model data dalam aplikasi. Struktur People mengandung field- field yang dibutuhkan dalam aplikasi, seperti name, email, university, hobbies, dan portfolio. Gorm.Model digunakan untuk menambahkan field-field default seperti ID, created_at, updated_at, dan deleted_at.
  • 26. controllers/people.go Pada package controllers, file people.go digunakan untuk mengatur logika dari aplikasi. Fungsi-fungsi yang ada di sini digunakan untuk menangani request dari routes yang didefinisikan sebelumnya dan mengatur respon yang dikirim ke client. Itulah contoh codingan REST API sederhana menggunakan Gorm dan Gin dengan struktur folder yang telah dijelaskan sebelumnya. Perlu diingat bahwa ini hanyalah sebuah contoh sederhana dan dalam pengembangan aplikasi yang sesungguhnya perlu diimplementasikan fitur-fitur yang dibutuhkan sesuai dengan kebutuhan aplikasi, seperti validasi, logging, dll.
  • 27. routes/people.go Pada package routes, file people.go digunakan untuk mengatur routing dari aplikasi. Routing didefinisikan dengan menggunakan Gin dan mengarahkan request ke controller yang sesuai. Pada contoh ini, route '/peoples’ digunakan untuk mengatur routing dari endpoint user.
  • 28. main.go Pada package main, file main.go akan dijalankan ketika aplikasi di run. Koneksi ke database dibuat dan di-handle dengan package config dan migrasi tabel dilakukan dengan Gorm. Kemudian router dari Gin dikonfigurasi dan dijalankan pada port 3000.
  • 29. Thank you for joining! … and see you !