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

results matching ""

    No results matching ""