Back to IF4031 Arsitektur Aplikasi Terdistribusi

Topic

Questions/Cues

  • Apa itu API?

  • Apa saja pertimbangan desain API?

  • Apa itu REST?

  • Apa saja metode HTTP umum?

  • Apa itu Idempotence?

  • Bagaimana desain API yang RESTful?

  • Apa itu JSON?

  • Apa itu XML?

  • Apa itu Serialisasi?

Reference Points

  • Slides IF4031 Hal 2-18

Definisi API (Application Programming Interface)

API adalah sebuah antarmuka yang mendefinisikan bagaimana sebuah software dapat berinteraksi atau digunakan oleh software lain. Untuk layanan jaringan (network service), API ini seringkali berbentuk Remote Procedure Call (RPC).

Pertimbangan Desain API

Saat merancang sebuah API, beberapa hal utama yang perlu dipertimbangkan adalah:

  • Format Data: Apakah akan menggunakan format teks (human-readable seperti JSON) atau biner (lebih efisien).

  • Architectural Style: Apakah akan berorientasi pada resource (seperti REST), RPC (pemanggilan fungsi langsung), atau query (seperti GraphQL).

REST (Representational State Transfer)

REST adalah sebuah gaya arsitektur, bukan protokol atau standar yang kaku. REST memanfaatkan fitur-fitur standar dari protokol HTTP untuk komunikasi.

Metode HTTP dan Semantiknya

  • GET: Meminta atau membaca data dari sebuah resource.

  • POST: Mengirimkan data untuk membuat entitas baru di bawah sebuah resource.

  • PUT: Membuat atau mengganti sebuah resource secara keseluruhan pada URL tertentu.

  • DELETE: Menghapus sebuah resource.

  • HEAD: Serupa GET, namun hanya mengembalikan header

Response

  • 2XX: Sukses
  • 3XX: Perlu aksi tambahan sehingga aksi dapat dipenuhi
  • 4XX: Masalah terjadi pada klien
  • 5XX: Masalah terjadi pada server

Idempotence

Sebuah operasi disebut idempotent jika menjalankannya berkali-kali akan memberikan hasil yang sama seperti menjalankannya sekali. Dalam HTTP, GET, HEAD, PUT, dan DELETE harus bersifat idempotent, sedangkan POST tidak.

  • Contoh Buruk: DELETE /posts/latest. Jika dipanggil berulang kali, ini akan terus menghapus post yang “terbaru” pada saat itu.

  • Contoh Baik: DELETE /posts/123. Memanggil ini berulang kali hanya akan menghapus post dengan ID 123; setelah yang pertama, panggilan berikutnya tidak akan mengubah state sistem lagi.

Desain Resource-Oriented

Dalam REST, path atau URI merepresentasikan “resources” (kata benda), bukan “actions” (kata kerja).

  • Kurang RESTful: POST /createUser

  • Lebih RESTful: POST /users

Format Data dan Serialisasi

JSON (JavaScript Object Notation)

Format data berbasis teks yang ringan dan mudah dibaca manusia. Menjadi standar de facto untuk REST API modern. Strukturnya terdiri dari objects {} (pasangan key-value) dan arrays [] (daftar berurut).

XML (eXtensible Markup Language)

Format yang lebih tua dan lebih verbose, menggunakan tags (<tag>...</tag>) untuk menstrukturkan data. Dulu populer, kini jarang digunakan untuk API baru karena kompleksitasnya.

Serialisasi

Serialisasi adalah proses mengubah struktur data kompleks di dalam memori (seperti objek atau graf) menjadi format linier (urutan byte) agar dapat ditransmisikan melalui jaringan atau disimpan dalam file. JSON dan XML adalah format hasil serialisasi.

Summary

API adalah antarmuka yang memungkinkan komunikasi antar software, dengan REST menjadi gaya arsitektur yang paling dominan untuk layanan web. REST memanfaatkan metode standar HTTP (GET, POST, PUT, DELETE) dan berfokus pada konsep “resources” yang idempotent. Untuk mentransmisikan data, struktur data di memori harus melalui proses serialisasi menjadi format teks seperti JSON, yang kini menjadi standar industri, atau XML yang lebih lawas.