Simple ReST API
Application Programming Interface (API) adalah sebuah konsep untuk memfasilitasi komunikasi atau transaksi antara dua atau lebih perangkat lunak. Transaksi bisa berupa pertukaran, penambahan, maupun perubahan data. Konsep API dibuat untuk memberi kemudahan dalam mengintegrasikan berbagai layanan aplikasi. Pengguna API adalah software, bukan end user. API yang akan kita bahas adalah API yang berjalan pada protocol HTTP atau yang biasa disebut Web API.
API umumnya diterapkan pada suatu aplikasi yang multi device/multi platform maupun karena kompleksitas aplikasi sehingga dibutuhkan untuk memecah aplikasi menjadi beberapa service yang independen (microservice).
Misal ada aplikasi yang frontend-nya berjalan di platform web dan mobile. Agar aplikasi web dan aplikasi mobile mempunyai standard yang sama, dibuatlah API . Pengembang aplikasi web maupun pengembang aplikasi mobile tidak perlu memikirkan bagaimana backend bekerja, mereka cukup membaca dokumentasi API yang disediakan dan mengkonsumsi API yang diperlukan oleh aplikasi yang mereka buat.
Begitu pula pengembang API tidak perlu memikirkan teknologi/infrastruktur yang digunakan dalam mengembangkan aplikasi frontend. Programmer API bisa fokus untuk menyediakan layanan-layanan API yang menjawab kebutuhan sistem. Untuk membangun komunikasi yang clear, pengembang API wajib menyediakan respon header atau yang lebih dikenal dengan istilah teknis HTTP Code, dan membuat dokumentasi API yang mudah dibaca oleh pihak lain.
Apa itu rest API
Penamaan URL RestAPI
Simple Rest API dengan Go
package main
import (
"github.com/gorilla/mux"
"time"
"net/http"
"encoding/json"
"strconv"
)
type User struct {
ID int64
Name string
Email string
CreatedAt time.Time
UpdateAt time.Time
DeletedAt time.Time
}
var users []User
func main() {
router := mux.NewRouter()
users = append(users, User{ ID: 1, Name: "Jacky Chan"})
users = append(users, User{ ID: 2, Name: "Jet Lee", Email: "[email protected]"})
router.HandleFunc("/api/users", GetUsersEndPoint).Methods("GET")
router.HandleFunc("/api/users", CreateUserEndPoint).Methods("POST")
router.HandleFunc("/api/users/{id}", GetUserEndPoint).Methods("GET")
http.ListenAndServe(":9090", router)
}
func GetUsersEndPoint(w http.ResponseWriter, _ *http.Request) {
json.NewEncoder(w).Encode(users)
}
func CreateUserEndPoint(w http.ResponseWriter, req *http.Request) {
var user User
user.Name = req.FormValue("name")
user.Email = req.FormValue("email")
// Validation
if len(user.Name) == 0 {
json.NewEncoder(w).Encode("Please suplay valid name")
return
}
if len(user.Email) == 0 {
json.NewEncoder(w).Encode("Please suplay valid email")
return
}
user.ID = int64(len(users)+1)
user.CreatedAt = time.Now()
users = append(users, user)
json.NewEncoder(w).Encode(user)
}
func GetUserEndPoint(w http.ResponseWriter, req *http.Request) {
params := mux.Vars(req)
id, _ := strconv.ParseInt(params["id"], 10, 64)
for _, v := range users {
if v.ID == id {
json.NewEncoder(w).Encode(v)
return
}
}
json.NewEncoder(w).Encode(&User{})
}
Penjelasan main dan routing
penjelasan GET List User
Penjelasan Create user
Penjelasan View user
Tes dengan Console
Tes dengan postman
tantangan : membuat fungsi edit dan delete