Pengenalan RESTFul API
Dikutip dari website amazon, API RESTful adalah antarmuka yang digunakan oleh dua sistem komputer untuk bertukar informasi secara aman melalui internet. Sebagian besar aplikasi bisnis harus berkomunikasi dengan aplikasi internal dan pihak ketiga lainnya untuk melakukan berbagai tugas. Misalnya, untuk menghasilkan slip gaji bulanan, sistem akun internal Anda harus berbagi data dengan sistem perbankan pelanggan Anda untuk mengotomatiskan tagihan dan berkomunikasi dengan aplikasi absensi internal. API RESTful mendukung pertukaran informasi ini karena mengikuti standar komunikasi perangkat lunak yang aman, andal, dan efisien.
Sebelum ke cara implementasinya sebenarnya kalian tahukan apa itu REST? REST ini adalah singkatan dari Representational State Transfer yaitu suatu arsitektur perangkat lunak yang memberikan syarat mengenai cara API Bekerja. REST pada awalnya dibuat sebagai panduan untuk mengelola komunikasi pada jaringan kompleks seperti internet. Anda dapat menggunakan arsitektur berbasis REST untuk mendukung komunkasi berperforma tinggi dan andal sesuai skala. Anda dapat dengan mudah menerapkan dan memodifikasinya, membawa visibilitas dan portabilitas lintas platform ke semua sistem API.
Developer API dapat merancang API menggunakan beberapa arsitektur yang berbeda. API yang mengikuti gaya arsitektur REST disebut sebagai API REST. Layanan web yang menerapkan arsitektur REST disebut sebagai layanan web RESTful. Istilah API RESTful umumnya merujuk pada API web RESTful. Namun, Anda dapat menggunakan istilah API REST dan API RESTful secara bergantian.
Beberapa prinsip gaya arsitektur REST:
- Antarmuka seragam, secara fundamental dari semua layanan web RESTFul memiliki format yang standar. Contohnya, server dapat menyimpan data sebagai teks ataupun berupa format representasi HTML.
- Statelessness, yaitu mengacu pada metode komunikasi tempat server menyelesaikan setiap permintaan klient secara independen. Dan sever harus memenuhi semua permintaan dalam setiap waktu.
- Sistem Berlapis, RESTFul berjalan pada beberapa sever dengan beberapa lapisan seperti keamanan, aplikasi, logika bisnis dan bekerjasama untuk memenuhi permintaan klien.
- Ketersinggahan (Cacheablility), RESTFul mendukung pembuatan cache proses penyimpanan sementara agar respon pada client cepat agar meningkatkan waktu respon.
- Kode sesuai permintaan, sever dapat sementara memperluas atau menyesuaikan fungsionalitas klien dengan mudah.
Beberapa yang Perlu di Pelajari
Sebelum masuk kita mempelajari lebih lanjut tentang RESTFul API kita perlu mempelajari lebih dahulu topik-topik sebelumnya dibawah ini
- HTTP
- Golang Web
- Golang HTTPRouter
- Golang JSON
- Golang OpenAPI
Aplikasi CRUD (Create, Read, Update, Delete) Sederhana
Pada projek sekarang akan kita buat adalah projek aplikasi sederhana yang bisa mengimplementasikan RESTfull API. Ada beberapa kriteria yang akan ada pada aplikasi diprojek ini diantaranya:
- Data yang akan kita buat yaitu data
Article
yang mana memiliki atribute a. it (number) b. title (string) c. content (string) - Aplikasi CRUD ini kita bisa a. membuat data artikel, b. melakukan perubahan data artikel, c. melihat data artikel dan d. menghapus data artikel.
- Semua API yang akan kita buat itu perlu menambahkan Authentication berupa API-Key.
Beberapa dependency yang akan kita pakai:
- Driver mySQL: github.com/go-sql-driver/mysql
- HTTP Router: https://github.com/julienschmidt/httprouter
- Validation: https://github.com/go-playground/validator
- Environtment: https://github.com/joho/godotenv
Persiapan
Kita akan coba membuat tahapan demi tahapan persiapan untuk membuat RESTFul API sebagai berikut:
Pertama kita buat terlebih dahulu folder learn-golang-restful
dengan perintah
mkdir learn-golang-restful && cd learn-golang-restful
Inisialisasi projek tersebut dengan menggunakan Golang Module dengan perintah dibawah ini dan lalu enter
go mod init github.com/santekno/learn-golang-restful
Selanjutnya kita ambil beberapa dependency yang akan kita pakai dengan menggunakan go get
seperti ini
go get -u github.com/lib/pq
go get -u github.com/julienschmidt/httprouter
go get -u github.com/go-playground/validator
Maka akan muncul dua file yaitu go.mod
dan go.sum
dengan isi file seperti ini
module github.com/santekno/learn-golang-restful
go 1.21.1
require (
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
github.com/go-playground/validator v9.31.0+incompatible // indirect
github.com/julienschmidt/httprouter v1.3.0 // indirect
github.com/leodido/go-urn v1.2.4 // indirect
github.com/lib/pq v1.10.9 // indirect
)
Sekarang kita akan membuat dokumentasi API menggunakan OpenAPI, nah bagi teman-teman yang belum menginstall extension OpenAPI Editor di VSCode bisa kita install terlebih dahulu di website ini https://marketplace.visualstudio.com/items?itemName=42Crunch.vscode-openapi.
Buat file baru dengan nama apispec.yml
lalu isi seperti dibawah ini
openapi: '3.0.2'
info:
title: Article RESTFul API
description: API Spec for Article RESTFul API
version: '1.0'
servers:
- url: https://localhost:8080/