2128 kata
11 menit

Apa Itu Backend dan API? Memahami Cara Kerja Website

Halo, Gabuters!

Selamat datang di seri baru BapakGabut: Backend dan API dengan JavaScript.

Pada seri sebelumnya, kita sudah belajar HTML, CSS, dan JavaScript. Kita bahkan berhasil membuat halaman profil interaktif menggunakan JavaScript.

Halaman tersebut sudah bisa mengganti tema, menampilkan salam, menghitung karakter, dan memvalidasi formulir.

Namun, ada satu keterbatasan penting.

Ketika pengunjung mengisi formulir dan menekan tombol kirim, pesan tersebut belum benar-benar dikirim atau disimpan.

JavaScript kita hanya memproses data di browser.

Lalu, bagaimana jika kita ingin menyimpan pesan pengunjung?

Bagaimana jika website memiliki sistem login?

Bagaimana jika daftar artikel diambil dari server, bukan ditulis langsung di dalam kode JavaScript?

Untuk kebutuhan seperti itulah kita mulai mengenal backend dan API.

Pada artikel ini, kita akan memahami cara kerja keduanya sebelum mulai membuat server sendiri.

1. Apa Itu Frontend?#

Frontend adalah bagian aplikasi yang berinteraksi langsung dengan pengguna.

Ketika membuka website, kita melihat berbagai elemen seperti:

  • Judul dan paragraf.
  • Gambar dan tombol.
  • Menu navigasi.
  • Formulir.
  • Daftar artikel.
  • Notifikasi.

Semua itu merupakan bagian dari antarmuka yang ditampilkan kepada pengguna.

Dalam pengembangan web, frontend biasanya menggunakan tiga teknologi utama.

HTML untuk struktur#

HTML menentukan elemen yang tersedia pada halaman.

Contohnya:

<h1>Selamat Datang di BapakGabut</h1>
<button type="button">Lihat Artikel</button>

CSS untuk tampilan#

CSS menentukan bagaimana elemen ditampilkan.

Contohnya:

button {
background-color: #2563eb;
color: white;
padding: 10px 16px;
}

JavaScript untuk interaksi#

JavaScript memungkinkan halaman merespons tindakan pengguna.

Contohnya:

const tombol = document.querySelector("button");
tombol.addEventListener("click", () => {
alert("Halo, Gabuters!");
});

Ketiga teknologi tersebut sudah kita gunakan dalam seri sebelumnya.

Namun, frontend bukan berarti seluruh proses aplikasi harus dijalankan di browser.

Untuk kebutuhan tertentu, frontend perlu berkomunikasi dengan sistem lain.

2. Apa Itu Backend?#

Backend adalah bagian aplikasi yang menjalankan proses di sisi server atau lingkungan komputasi yang tidak langsung dikendalikan oleh browser pengguna.

Backend biasanya menangani pekerjaan seperti:

  • Menerima permintaan dari frontend.
  • Memvalidasi data.
  • Menjalankan aturan bisnis.
  • Mengatur autentikasi dan otorisasi.
  • Mengambil atau menyimpan data.
  • Berkomunikasi dengan database atau layanan lain.
  • Mengirim hasil pemrosesan kepada frontend.

Bayangkan kita mempunyai formulir kontak.

Pengunjung mengisi nama, email, dan pesan.

Frontend bertugas menampilkan formulir serta membantu memeriksa input.

Backend dapat bertugas menerima data, melakukan validasi ulang, menyimpannya, lalu mengirim respons.

Dengan demikian, frontend dan backend mempunyai tanggung jawab yang berbeda.

Apakah semua website membutuhkan backend sendiri?#

Tidak selalu.

Website yang hanya menampilkan konten statis dapat berjalan tanpa backend aplikasi khusus yang kita bangun sendiri.

Contohnya, halaman profil sederhana yang berisi teks, gambar, dan tautan.

Website seperti itu tetap dikirim oleh web server atau layanan hosting, tetapi kita tidak harus membuat aplikasi backend sendiri.

Backend aplikasi menjadi relevan ketika kita membutuhkan pemrosesan di server, data dinamis, autentikasi, atau integrasi layanan tertentu.

3. Apa Itu Server?#

Istilah server sering muncul ketika membahas backend.

Secara sederhana, server dapat merujuk pada komputer atau lingkungan yang menyediakan layanan, maupun program yang menerima dan merespons permintaan.

Contohnya, ketika browser meminta sebuah halaman, web server dapat mengirimkan file HTML, CSS, dan JavaScript.

Dalam aplikasi lain, server dapat menjalankan program backend yang menerima data dan menghasilkan respons JSON.

Jadi, server tidak selalu berarti satu komputer fisik besar yang berada di ruang khusus.

Aplikasi server juga bisa berjalan di:

  • Laptop pengembang.
  • Virtual Private Server (VPS).
  • Mesin virtual.
  • Container.
  • Layanan cloud.

Untuk belajar, kita bahkan bisa menjalankan server di komputer sendiri.

Nantinya, kita akan menggunakan Node.js untuk membuat HTTP server sederhana.

4. Bagaimana Browser Berkomunikasi dengan Server?#

Sekarang kita lihat alur ketika pengguna membuka website.

Secara sederhana, prosesnya seperti ini:

Pengguna membuka website
|
v
Browser mengirim HTTP request
|
v
Server menerima permintaan
|
v
Server memproses permintaan
|
v
Server mengirim HTTP response
|
v
Browser menampilkan hasil

Dua istilah penting dalam proses tersebut adalah request dan response.

Request#

Request adalah permintaan yang dikirim oleh client kepada server.

Dalam konteks website, client biasanya berupa browser.

Contohnya, browser meminta halaman:

GET /artikel

Atau frontend mengirim data formulir ke sebuah endpoint:

POST /api/pesan

Response#

Response adalah jawaban dari server atas request yang diterima.

Respons dapat berupa:

  • Dokumen HTML.
  • Data JSON.
  • Gambar.
  • File.
  • Pesan kesalahan.
  • Informasi status pemrosesan.

Contohnya, server dapat mengembalikan data artikel dalam format JSON:

{
"id": 1,
"judul": "Belajar JavaScript",
"kategori": "Programming"
}

Frontend kemudian dapat menggunakan data tersebut untuk memperbarui tampilan halaman.

5. Apa Itu API?#

API adalah singkatan dari Application Programming Interface.

Secara umum, API merupakan antarmuka yang memungkinkan suatu komponen perangkat lunak menggunakan fungsi atau layanan komponen lain melalui aturan yang telah ditentukan.

API tidak selalu berkaitan dengan internet.

Sebagai contoh, JavaScript di browser menyediakan DOM API untuk mengakses elemen HTML.

Namun, dalam seri Backend dan API ini, kita akan lebih banyak membahas Web API, khususnya API yang diakses melalui HTTP.

Bayangkan frontend ingin mengambil daftar artikel dari backend.

Frontend tidak harus mengetahui bagaimana backend menyimpan dan mengolah data.

Frontend cukup mengirim permintaan ke alamat API yang disediakan.

Contohnya:

GET /api/artikel

Backend kemudian mengembalikan data yang sesuai.

Dengan pendekatan ini, frontend dan backend dapat dikembangkan sebagai bagian yang saling berkomunikasi melalui antarmuka yang disepakati.

6. Mengenal Endpoint API#

Endpoint adalah titik akses tertentu yang disediakan API untuk menerima permintaan.

Contohnya, sebuah aplikasi artikel mungkin mempunyai endpoint:

GET /api/artikel

Untuk mengambil daftar artikel.

GET /api/artikel/1

Untuk mengambil detail artikel dengan ID tertentu.

POST /api/artikel

Untuk membuat artikel baru.

DELETE /api/artikel/1

Untuk meminta penghapusan artikel dengan ID tertentu.

Contoh tersebut menggambarkan rancangan API sederhana.

Endpoint bukan hanya alamat URL.

Kita juga perlu memperhatikan HTTP method yang digunakan.

Request GET dan POST ke path yang sama dapat mempunyai tujuan berbeda.

Nanti kita akan membahas HTTP method lebih lengkap pada artikel berikutnya.

7. Apa Itu JSON?#

Ketika frontend dan backend bertukar data, salah satu format yang sangat umum digunakan adalah JSON.

JSON merupakan singkatan dari JavaScript Object Notation.

Formatnya mudah dibaca dan banyak digunakan oleh berbagai bahasa pemrograman.

Contohnya:

{
"nama": "BapakGabut",
"kategori": "Programming",
"jumlahArtikel": 10,
"aktif": true
}

JSON terlihat mirip dengan object JavaScript, tetapi keduanya tidak sepenuhnya sama.

Contohnya, JSON mewajibkan nama properti ditulis menggunakan tanda kutip ganda.

JSON juga tidak mendukung function sebagai nilai.

Dalam JavaScript, kita bisa mengubah object menjadi string JSON menggunakan:

const artikel = {
judul: "Belajar JavaScript",
kategori: "Programming"
};
const json = JSON.stringify(artikel);
console.log(json);

Sebaliknya, kita bisa mengubah string JSON yang valid menjadi nilai JavaScript menggunakan:

const teksJSON =
'{"judul":"Belajar JavaScript","kategori":"Programming"}';
const data = JSON.parse(teksJSON);
console.log(data.judul);

Hasilnya:

Belajar JavaScript

Untuk sekarang, cukup pahami bahwa JSON merupakan salah satu format yang sering digunakan untuk pertukaran data antara frontend dan backend.

8. Studi Kasus: Formulir Kontak BapakGabut#

Sekarang kita gunakan contoh yang sudah akrab.

Pada mini project JavaScript sebelumnya, kita membuat formulir kontak.

Pengunjung dapat mengisi:

  • Nama.
  • Email.
  • Pesan.

Kemudian JavaScript melakukan validasi.

Namun, hasilnya hanya ditampilkan di browser.

Mari bayangkan kita ingin mengembangkan formulir tersebut menjadi fitur sungguhan.

Tahap 1: Pengunjung mengisi formulir#

Frontend menerima input:

Nama: Gabuters
Email: gabuters@example.com
Pesan: Halo, saya ingin bertanya.

Tahap 2: Frontend mengirim request#

Frontend mengirim data ke endpoint backend.

Misalnya:

POST /api/pesan

Dengan body JSON:

{
"nama": "Gabuters",
"email": "gabuters@example.com",
"pesan": "Halo, saya ingin bertanya."
}

Tahap 3: Backend memvalidasi data#

Backend memeriksa apakah data memenuhi aturan yang ditentukan.

Contohnya:

  • Nama tidak kosong.
  • Format email sesuai aturan aplikasi.
  • Pesan tidak kosong.
  • Panjang pesan tidak melebihi batas.

Validasi di backend tetap diperlukan walaupun frontend sudah melakukan validasi.

Mengapa?

Karena request tidak selalu berasal dari halaman frontend yang kita buat.

Client lain juga dapat mengirim request langsung ke API.

Tahap 4: Backend memproses data#

Jika data valid, backend dapat menyimpannya ke database atau meneruskannya ke layanan lain.

Namun, untuk seri awal ini, kita belum akan menggunakan database.

Kita akan berlatih memproses data sementara di memori server.

Tahap 5: Backend mengirim response#

Misalnya, backend mengembalikan:

{
"berhasil": true,
"pesan": "Pesan berhasil diterima."
}

Frontend membaca respons tersebut, kemudian menampilkan notifikasi kepada pengunjung.

Dengan demikian, alur formulir menjadi:

Pengunjung
|
v
Formulir HTML
|
v
JavaScript Frontend
|
| HTTP Request
v
Backend API
|
| Validasi dan pemrosesan
v
HTTP Response
|
v
JavaScript Frontend
|
v
Notifikasi di halaman

Inilah gambaran dasar komunikasi frontend dan backend.

9. Mengapa Validasi Harus Ada di Backend?#

Pertanyaan ini penting.

Jika JavaScript di frontend sudah memeriksa input, mengapa backend harus memeriksanya lagi?

Karena frontend berjalan di lingkungan pengguna.

Pengguna dapat mengubah kode yang dijalankan di browser, menonaktifkan JavaScript tertentu, atau mengirim request langsung menggunakan aplikasi lain.

Karena itu, backend tidak boleh menganggap seluruh data yang diterima pasti valid atau aman.

Misalnya, formulir membatasi pesan maksimal 200 karakter.

Frontend dapat membantu pengguna mematuhi batas tersebut.

Namun, backend tetap perlu memeriksa panjang pesan sebelum memprosesnya.

Selain validasi, backend juga perlu menerapkan aturan otorisasi untuk operasi yang membutuhkan izin.

Contohnya, endpoint penghapusan artikel tidak boleh mengizinkan sembarang pengguna menghapus artikel hanya karena mereka mengetahui alamat endpoint.

Validasi dan otorisasi merupakan dua hal berbeda.

Validasi memeriksa apakah data sesuai aturan.

Otorisasi memeriksa apakah suatu pihak memiliki izin melakukan tindakan tertentu.

Kita akan mengenal praktik dasarnya secara bertahap.

10. Apa Perbedaan Backend dan Database?#

Backend dan database sering disebut bersamaan, tetapi keduanya bukan hal yang sama.

Backend adalah bagian aplikasi yang memproses request dan menjalankan logika aplikasi.

Database adalah sistem untuk menyimpan, mengelola, dan mengambil data.

Misalnya, pengunjung mengirim pesan.

Backend menerima request, memvalidasi isi pesan, kemudian meminta database menyimpannya.

Alurnya dapat digambarkan sebagai berikut:

Frontend
|
v
Backend API
|
v
Database
|
v
Backend API
|
v
Frontend

Namun, tidak semua backend harus menggunakan database.

Backend sederhana dapat mengembalikan data yang ditulis langsung di dalam program.

Kita juga bisa menyimpan data sementara di memori.

Hanya saja, data yang disimpan di memori biasanya hilang ketika proses server dihentikan atau dimulai ulang.

Karena itu, database menjadi penting ketika aplikasi membutuhkan penyimpanan data yang bertahan lebih lama.

Pada seri ini, kita akan mempelajari backend terlebih dahulu.

Setelah itu, kita akan masuk ke seri Database.

11. Apakah Backend Harus Menggunakan Bahasa Tertentu?#

Tidak.

Backend dapat dibuat menggunakan berbagai bahasa dan runtime.

Contohnya:

  • JavaScript dengan Node.js.
  • Python.
  • PHP.
  • Java.
  • Go.
  • C#.

Masing-masing mempunyai ekosistem, kelebihan, dan pendekatan yang berbeda.

Pada seri ini, kita memilih JavaScript karena sebelumnya sudah mempelajari dasar-dasarnya.

Dengan begitu, kita tidak perlu langsung belajar sintaks bahasa baru.

Namun, ada hal penting yang perlu dipahami.

JavaScript yang berjalan di browser berbeda lingkungannya dengan JavaScript yang berjalan di Node.js.

Browser menyediakan API seperti:

document.querySelector()

Sedangkan Node.js menyediakan API untuk kebutuhan server, termasuk membuat HTTP server.

Kita tidak bisa menggunakan document secara langsung dalam program Node.js biasa karena lingkungan Node.js tidak menyediakan DOM browser.

Sebaliknya, Node.js dapat menyediakan kemampuan untuk menjalankan server HTTP menggunakan modul bawaannya.

12. Apa Itu Node.js?#

Node.js adalah runtime JavaScript yang memungkinkan kita menjalankan JavaScript di luar browser.

Salah satu penggunaannya adalah membangun aplikasi backend.

Dengan Node.js, kita dapat membuat program yang:

  • Menerima HTTP request.
  • Mengirim HTTP response.
  • Membaca dan menulis file.
  • Menjalankan proses di server.
  • Berkomunikasi dengan layanan lain.

Node.js bukan bahasa pemrograman baru.

Bahasa yang digunakan tetap JavaScript.

Yang berbeda adalah lingkungan dan API yang tersedia.

Apakah kita langsung menggunakan Express?#

Tidak.

Express merupakan framework yang dapat membantu pengembangan aplikasi web menggunakan Node.js.

Namun, sebelum menggunakan framework, kita akan belajar membuat HTTP server menggunakan modul bawaan Node.js.

Dengan begitu, kita bisa memahami apa yang sebenarnya terjadi ketika sebuah request diterima dan response dikirim.

Setelah fondasinya kuat, mempelajari framework akan menjadi lebih mudah.

13. Mengenal Konsep Client dan Server#

Sekarang kita rapikan dua istilah yang sering digunakan.

Client#

Client adalah pihak yang meminta layanan.

Dalam contoh website, browser berperan sebagai client ketika mengirim request ke server.

Namun, client tidak selalu berupa browser.

Aplikasi mobile, aplikasi desktop, dan program backend lain juga dapat menjadi client.

Server#

Server adalah pihak yang menyediakan layanan dan merespons request.

Dalam satu sistem, sebuah program bahkan dapat menjadi server untuk satu layanan sekaligus menjadi client ketika meminta layanan lain.

Jadi, istilah client dan server menggambarkan peran dalam suatu komunikasi, bukan selalu jenis perangkat tertentu.

14. Apakah API Sama dengan REST API?#

Tidak sepenuhnya.

API merupakan istilah umum untuk antarmuka komunikasi antarkomponen perangkat lunak.

REST adalah gaya arsitektur untuk sistem terdistribusi yang mempunyai sejumlah prinsip dan batasan.

Istilah REST API biasanya digunakan untuk API HTTP yang dirancang mengikuti prinsip REST.

Dalam praktik sehari-hari, kita sering melihat API HTTP yang menggunakan:

GET /api/artikel
POST /api/artikel
PUT /api/artikel/1
DELETE /api/artikel/1

Pola tersebut umum digunakan pada API berbasis resource.

Namun, penggunaan HTTP method dan URL seperti itu saja belum otomatis membuktikan bahwa seluruh batasan REST sudah dipenuhi.

Untuk seri pemula ini, kita akan mempelajari praktik dasar pembuatan API HTTP dengan pendekatan yang umum digunakan pada REST API.

Kita akan membahas konsepnya lebih detail pada artikel berikutnya.

15. Kesalahan Pemahaman yang Sering Terjadi#

Menganggap backend selalu membutuhkan database#

Tidak selalu.

Backend bisa menjalankan logika dan mengembalikan respons tanpa database.

Menganggap JavaScript hanya berjalan di browser#

JavaScript juga dapat berjalan di luar browser menggunakan runtime seperti Node.js.

Menganggap semua API menggunakan JSON#

Tidak.

API dapat menggunakan berbagai format data dan protokol.

Namun, JSON sangat umum digunakan pada Web API.

Menganggap validasi frontend sudah cukup#

Tidak.

Backend tetap perlu memvalidasi data yang diterima.

Menganggap mengetahui endpoint berarti boleh mengakses semuanya#

Tidak.

Aplikasi perlu menerapkan autentikasi dan otorisasi sesuai kebutuhan.

Menganggap Express wajib untuk membuat backend Node.js#

Tidak.

Node.js memiliki modul bawaan untuk membuat HTTP server tanpa Express.

Framework dapat mempermudah pekerjaan, tetapi bukan syarat untuk memahami dan membangun server HTTP sederhana.

16. Latihan Pemahaman#

Sebelum masuk ke materi teknis, coba jawab pertanyaan berikut.

Pertanyaan 1#

Ketika pengguna menekan tombol untuk mengganti tema website dari terang menjadi gelap, apakah fitur tersebut selalu membutuhkan backend?

Pikirkan apakah perubahan tersebut bisa dilakukan langsung di browser.

Pertanyaan 2#

Ketika pengguna ingin menyimpan pesan agar bisa dibaca kembali minggu depan, apakah cukup hanya menggunakan variabel JavaScript di halaman?

Apa yang terjadi ketika halaman ditutup?

Pertanyaan 3#

Jika frontend mengirim data ke endpoint:

POST /api/pesan

Bagian aplikasi mana yang seharusnya memvalidasi data sebelum disimpan?

Pertanyaan 4#

Apakah API selalu harus dibuat menggunakan Node.js?

Coba ingat beberapa bahasa lain yang bisa digunakan untuk membangun backend.

Pertanyaan 5#

Apa perbedaan antara server dan database?

Coba jelaskan menggunakan contoh aplikasi formulir kontak.

Tidak perlu langsung menghafal semua istilah.

Yang penting, kita mulai memahami bagaimana setiap komponen mempunyai peran masing-masing.

17. Penutup#

Pada artikel pertama seri Backend dan API ini, kita sudah memahami beberapa konsep dasar.

Frontend adalah bagian aplikasi yang berinteraksi dengan pengguna.

Backend menangani pemrosesan di sisi server.

Server menyediakan layanan dan merespons permintaan.

API menyediakan antarmuka komunikasi antarkomponen perangkat lunak.

Kita juga memahami bahwa frontend dan backend dapat bertukar data melalui HTTP request dan response, sering kali menggunakan format JSON.

Selain itu, kita mengenal Node.js sebagai runtime untuk menjalankan JavaScript di luar browser.

Pada seri ini, kita akan menggunakan Node.js native terlebih dahulu tanpa Express.

Namun, sebelum membuat server sendiri, ada beberapa konsep yang perlu kita pahami lebih dalam.

Apa perbedaan GET, POST, PUT, dan DELETE?

Apa arti status 200, 404, atau 500?

Bagaimana JSON dikirim melalui HTTP?

Pada artikel berikutnya, kita akan membahas Mengenal HTTP, JSON, dan REST API untuk Pemula.

Sampai jumpa di artikel berikutnya, Gabuters!

Bagian 1 dari 6Tulisan ini bagian dari seri

Bagikan Artikel

Buat poster berbagi atau salin tautan artikel ini.

Lanjut membaca

Bacaan terkait

Berdasarkan tag dan kategori yang sama

Coba jalur lain

Pilihan konsisten dari artikel lain