pemrograman

01 Pengenalan RESTful Pada Golang

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:

  1. Data yang akan kita buat yaitu data Article yang mana memiliki atribute a. it (number) b. title (string) c. content (string)
  2. Aplikasi CRUD ini kita bisa a. membuat data artikel, b. melakukan perubahan data artikel, c. melihat data artikel dan d. menghapus data artikel.
  3. Semua API yang akan kita buat itu perlu menambahkan Authentication berupa API-Key.

Beberapa dependency yang akan kita pakai:

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/
comments powered by Disqus