Tantangan dan Rekomendasi untuk API SDK

Aug 20, 2024

Catatan Kuliah tentang SDK dan API Client

Pendahuluan

  • Penjelasan tentang ketidaksukaan penulis dalam membuat API client atau SDK.
  • Diskusi mengenai permintaan integrasi API dan SDK dari klien.

Contoh Kasus: Payment Gateway

  • Contoh aplikasi: Payment Gateway.
  • Klien mengintegrasi menggunakan berbagai teknologi (PHP, Java, Node.js, dsb).
  • Penulis mencatat praktik umum perusahaan dalam menyediakan SDK untuk berbagai bahasa pemrograman.

Masalah yang Dihadapi

1. Banyak Teknologi yang Harus Disiapkan

  • Banyaknya bahasa pemrograman yang perlu didukung:
    • Java
    • PHP
    • Node.js
    • Golang
    • Python
  • Konten library SDK seringkali sederhana (request JSON, respons, HTTP client).

2. Duplikasi Kode

  • Semua developer seharusnya sudah tahu cara membuat request, respons, dan HTTP client.
  • Penyediaan library SDK dianggap sebagai duplikasi kode.

3. Variasi HTTP Client

  • Beragam pilihan library HTTP client:
    • Node.js: Axios, Fetch, dll.
    • Java: Apache Commons HTTP, Retrofit, dll.
  • Kesulitan dalam menentukan library yang tepat.

4. Masalah Versi

  • Kesesuaian versi library antara SDK dan yang digunakan klien (misal: Apache Commons HTTP versi 1 vs versi 2).
  • Tantangan dalam menjaga versi agar tetap kompatibel.

5. Penanganan Bug

  • Risiko jika terjadi bug di SDK (misal: memory leak):
    • Harus meminta klien untuk mengupgrade.
    • Tantangan dalam mengomunikasikan perubahan kepada semua klien.

Rekomendasi

  • Alih-alih membuat SDK, fokus pada pembuatan dokumentasi API:
    • Menggunakan Open API untuk dokumentasi.
    • Buat halaman Markdown untuk deskripsi request dan respons.
  • Manfaat dari pembuatan dokumentasi:
    • Klien dapat menghasilkan kode mereka sendiri dari spesifikasi Open API.
    • Memberikan kebebasan kepada klien untuk memilih teknologi yang mereka gunakan.

Kesimpulan

  • Penulis menyarankan untuk tidak membuat API client atau SDK karena kompleksitas dan pemeliharaan yang dibutuhkan.
  • Lebih baik fokus pada dokumentasi API yang jelas, yang memungkinkan klien untuk menggunakan library mereka sendiri.