K

Command Palette

Search for a command to run...

Daftar

Cara Kerja Web API

Bagaimana sih Web API 'berbicara'? Pelajari alur dasar komunikasi menggunakan model Request-Response melalui protokol HTTP, termasuk komponen-komponen pentingnya.

"Surat-Menyurat" Digital: Cara Web API Ngobrol Pake Request & Response!

Udah tau kan kalau Web API itu jadi "jembatan" buat aplikasi saling ngobrol lewat internet pake protokol HTTP? Nah, "obrolan" ini punya alur yang jelas, kayak orang lagi surat-menyurat atau kayak kamu pesen barang di toko online. Ada yang minta (request), ada yang ngasih jawaban (response).

Yuk, kita bedah alur kerja dasar Web API ini!

Model Klien-Server: Siapa Minta, Siapa Jawab

Sebelum ngomongin request dan response, inget dulu konsep Klien-Server:

  • Klien (Client): Ini adalah pihak yang memulai komunikasi dan meminta layanan atau data. Di konteks Web API, klien ini bisa jadi:
    • Browser webmu (pas JavaScript di halaman webmu manggil API).
    • Aplikasi mobile-mu.
    • Aplikasi desktop.
    • Bahkan server lain yang butuh data dari API itu.
  • Server (Server API): Ini adalah pihak yang menyediakan layanan atau data dan menanggapi permintaan dari klien. Server ini yang nge-host API-nya.

Jadi, klien minta sesuatu, server API nyoba nyediainnya.

Alur Komunikasi Web API: Request -> Proses -> Response

Bayangin kamu mau tau ramalan cuaca besok buat kotamu pake aplikasi cuaca di HP. Kira-kira gini alurnya di balik layar pake Web API:

Mari kita detailkan bagian Request dan Response-nya:

1. HTTP Request (Permintaan dari Klien)

Pas klien mau "ngomong" sama server API, dia bakal ngirim HTTP Request. Request ini kayak surat resmi yang isinya detail permintaan. Beberapa komponen penting dari HTTP Request:

  • URL Endpoint (Alamat Tujuan):

    • Ini adalah alamat spesifik di server API yang dituju buat ngedapetin data atau ngelakuin aksi tertentu. Tiap endpoint biasanya ngewakilin "resource" (sumber daya) tertentu.
    • Contoh:
      • https://api.contoh.com/users (mungkin buat ngambil daftar semua pengguna)
      • https://api.contoh.com/products/123 (mungkin buat ngambil detail produk dengan ID 123)
      • https://api.cuaca.com/forecast?city=Jakarta&days=1 (mungkin buat ramalan cuaca Jakarta 1 hari, city dan days itu query parameters).
  • HTTP Method (Kata Kerja / Verb):

    • Ini ngasih tau server API aksi apa yang mau dilakuin sama klien terhadap resource di URL endpoint itu.
    • Beberapa method yang paling umum (buat pemula, fokus ke GET dulu aja udah bagus):
      • GET: Buat ngambil atau ngebaca data dari server. Ini yang paling sering dipake. Permintaan GET itu aman dan idempotent (dipanggil berkali-kali hasilnya tetep sama, gak ngubah data di server).
      • POST: Buat ngirim data baru ke server buat dibikin (misal, nambah pengguna baru, bikin postingan blog baru). Data yang dikirim biasanya ada di body request.
      • PUT: Buat ngupdate data yang udah ada di server secara keseluruhan. Kamu kirim semua field data yang mau diupdate.
      • PATCH: Mirip PUT, tapi buat ngupdate sebagian kecil aja dari data yang udah ada. Lebih efisien kalau cuma mau ganti satu atau dua field.
      • DELETE: Buat ngapus data yang ada di server.
    • Contoh: GET https://api.contoh.com/users (Ambil daftar pengguna). POST https://api.contoh.com/users (Bikin pengguna baru, datanya di body request).
  • Headers (Kepala Surat - Opsional tapi Sering Ada):

    • Ini isinya informasi tambahan atau metadata soal request-nya.
    • Contoh Headers:
      • Content-Type: Ngasih tau format data yang dikirim di body request (misal, application/json kalau ngirim data JSON).
      • Accept: Ngasih tau server format data apa yang bisa diterima sama klien di response (misal, application/json).
      • Authorization: Sering dipake buat ngirim informasi autentikasi (kayak API Key atau token).
      • User-Agent: Info soal browser atau aplikasi klien yang ngirim request.
  • Body (Isi Surat - Opsional, Tergantung Method):

    • Ini adalah data aktual yang mau dikirim ke server.
    • Biasanya dipake sama method POST, PUT, PATCH. Method GET dan DELETE umumnya gak punya body.
    • Format datanya seringnya JSON.

2. Server API Memproses Request

Setelah server API nerima HTTP Request dari klien, dia bakal:

  1. Ngevalidasi request: Apakah URL-nya bener? Method-nya didukung? Autentikasinya valid (kalau perlu)? Format datanya bener?
  2. Ngelakuin aksi yang diminta: Misalnya, ngambil data dari database, nyimpen data baru, ngupdate data, atau ngapus data.
  3. Nyiapin HTTP Response.

3. HTTP Response (Jawaban dari Server API)

Setelah selesai diproses, server API bakal ngirim HTTP Response balik ke klien. Ini kayak "surat balasan"-nya. Komponen pentingnya:

  • Status Code (Kode Status):

    • Ini adalah angka 3 digit yang ngasih tau hasil dari request yang tadi dikirim. Penting banget buat tau apakah permintaan kita berhasil, gagal, atau ada masalah lain.
    • Beberapa kategori Status Code yang umum:
      • 2xx (Sukses): Permintaan berhasil diterima, dipahami, dan diproses.
        • 200 OK: Sukses standar buat GET atau PUT/PATCH.
        • 201 Created: Sukses buat POST (resource baru berhasil dibuat).
        • 204 No Content: Sukses, tapi gak ada konten yang dikirim balik di body (misal, buat DELETE).
      • 3xx (Redirection / Pengalihan): Klien perlu ngelakuin aksi tambahan buat nyelesaiin request (misal, pindah ke URL lain).
      • 4xx (Client Error / Kesalahan Klien): Ada yang salah sama request dari klien.
        • 400 Bad Request: Request-nya gak bener formatnya.
        • 401 Unauthorized: Butuh autentikasi, atau autentikasi gagal.
        • 403 Forbidden: Punya autentikasi, tapi gak punya izin buat ngakses resource itu.
        • 404 Not Found: Resource yang diminta (URL endpoint) gak ditemuin di server. Ini yang paling sering diliat!
      • 5xx (Server Error / Kesalahan Server): Ada yang salah di sisi server API pas lagi nyoba proses request.
        • 500 Internal Server Error: Error umum di server.
        • 503 Service Unavailable: Server lagi down atau kelebihan beban.
    • Ngertiin arti status code ini penting banget buat debugging!
  • Headers (Kepala Surat Balasan - Opsional tapi Sering Ada):

    • Informasi tambahan dari server soal response-nya.
    • Contoh Headers:
      • Content-Type: Ngasih tau format data yang ada di body response (misal, application/json).
      • Content-Length: Ukuran body response.
      • Date: Tanggal dan waktu response dikirim.
      • Cache-Control: Instruksi buat caching.
  • Body (Isi Surat Balasan - Opsional, Tergantung Request dan Status Code):

    • Ini adalah data aktual yang dikirim balik sama server API.
    • Kalau request-nya GET dan berhasil (200 OK), body ini biasanya isinya data yang diminta (misal, data pengguna atau produk dalam format JSON).
    • Kalau POST berhasil (201 Created), body bisa isinya data resource yang baru dibuat.
    • Kalau error (kayak 404 atau 500), body bisa isinya pesan error yang lebih detail (seringnya juga JSON).

4. Klien Menerima dan Memproses Response

Setelah klien nerima HTTP Response, dia bakal:

  1. Ngecek Status Code-nya dulu. Kalau sukses (2xx), lanjut proses. Kalau error (4xx/5xx), mungkin nampilin pesan error ke pengguna.
  2. Kalau ada data di body response (misal, JSON), klien bakal nge-parse (ngebaca dan ngertiin struktur) data itu.
  3. Terus, klien bisa nampilin data itu ke pengguna, nyimpen ke variabel, atau ngelakuin aksi lain sesuai kebutuhan aplikasinya.

Nah, itu dia alur dasar "obrolan" antara klien dan server API pake model Request-Response HTTP. Meskipun keliatannya banyak komponennya, intinya simpel: Klien Minta (Request), Server Jawab (Response).

Ngertiin alur ini penting banget, karena pas kamu nanti mulai beneran "manggil" API pake JavaScript (misal, pake Fetch API), kamu bakal berurusan langsung sama ngirim request dan nangkep responsenya.

Di materi berikutnya, kita bakal fokus ke format data yang paling sering dipake buat "isi surat" di antara klien dan server API: JSON!


Kuis Cara Kerja Web API (Request-Response)

Pertanyaan 1 dari 5

Dalam model komunikasi Web API, pihak mana yang memulai permintaan (request) untuk mendapatkan data atau layanan?