Pertanyaan dan Jawaban Wawancara REST API (Panduan 2026)
Pelajari cara menguasai konsep REST API dari dasar hingga pola lanjutan dengan 50+ pertanyaan wawancara, contoh kode praktis, dan tabel referensi cepat.
REST API menggerakkan sebagian besar integrasi di internet. Baik Anda melamar peran backend, posisi full stack, atau pekerjaan rekayasa perangkat lunak, Anda kemungkinan akan menghadapi pertanyaan tentang desain REST API, metode HTTP, dan pola autentikasi.
Dalam panduan ini, saya akan mengajak Anda menelusuri pertanyaan-pertanyaan yang benar-benar diajukan oleh pewawancara. Saya mengelompokkannya berdasarkan tingkat kesulitan dan jenis peran, sehingga Anda bisa fokus pada hal yang paling relevan untuk posisi target Anda. Setiap jawaban mencakup contoh praktis dan, jika relevan, cuplikan kode yang dapat Anda adaptasi.
Satu hal yang perlu diingat: pewawancara jauh lebih sering menguji dasar-dasar daripada topik tingkat lanjut. Jika Anda menguasai hal-hal mendasar (metode HTTP, kode status, stateless), Anda akan menghadapi sebagian besar wawancara REST API dengan percaya diri. Pola arsitektur yang canggih menyusul kemudian.
Pertanyaan Wawancara REST API Dasar
Pertanyaan-pertanyaan ini menguji pengetahuan fundamental Anda. Harapkan muncul di hampir setiap wawancara, terlepas dari tingkat senioritas.
1. Apa itu REST dan apa saja batasannya?
REST adalah singkatan dari Representational State Transfer. Ini adalah gaya arsitektur untuk merancang aplikasi jaringan, didefinisikan oleh Roy Fielding dalam disertasi doktoralnya tahun 2000.
REST memiliki enam batasan:
Client-Server: Pemisahan tanggung jawab antara antarmuka pengguna dan penyimpanan data
Stateless: Setiap permintaan berisi semua informasi yang diperlukan untuk menyelesaikannya
Cacheable: Respons harus menunjukkan apakah dapat di-cache
Layered System: Komponen tidak dapat melihat melampaui lapisan terdekatnya
Uniform Interface: Cara baku untuk berinteraksi dengan sumber daya
Code-on-Demand (opsional): Server dapat mengirimkan kode yang dapat dieksekusi ke klien
2. Apa perbedaan antara REST dan SOAP?
REST adalah gaya arsitektur; SOAP adalah protokol. REST biasanya menggunakan JSON di atas HTTP dan memanfaatkan metode HTTP standar. SOAP menggunakan XML secara eksklusif dan mendefinisikan format pesan sendiri dengan amplop dan header.
Aspek
REST
SOAP
Format
JSON, XML, lainnya
Hanya XML
Transport
HTTP
HTTP, SMTP, lainnya
Caching
Caching HTTP bawaan
Tidak dapat di-cache
Kinerja
Ringan
Overhead lebih tinggi
SOAP masih masuk akal untuk sistem enterprise yang memerlukan kontrak formal (WSDL) atau keamanan tingkat pesan (WS-Security).
3. Apa itu metode HTTP dan kapan Anda menggunakan masing-masing?
Metode HTTP mendefinisikan aksi yang akan dilakukan pada suatu sumber daya.
Metode
Tujuan
Contoh
GET
Mengambil sumber daya
GET /users/123
POST
Membuat sumber daya baru
POST /users
PUT
Mengganti seluruh sumber daya
PUT /users/123
PATCH
Memperbarui sebagian sumber daya
PATCH /users/123
DELETE
Menghapus sumber daya
DELETE /users/123
4. Apa perbedaan antara PUT dan POST?
POST membuat sumber daya baru di mana server menentukan URI. PUT menggantikan sumber daya pada URI spesifik yang ditentukan klien.
POST /users → Server creates user, returns /users/123
PUT /users/123 → Client specifies URI, replaces entire resourceDidukung oleh
Jika Anda melakukan PUT ke URI yang belum ada, server mungkin akan membuatnya. Jika Anda melakukan PUT ke URI yang sudah ada, Anda mengganti seluruh sumber daya.
5. Apa perbedaan antara PUT dan PATCH?
PUT menggantikan seluruh sumber daya. PATCH menerapkan modifikasi parsial.
# PUT replaces everything
PUT /users/123{"name":"Khalid","email":"[email protected]","role":"admin"}# PATCH updates only specified fields
PATCH /users/123{"role":"admin"}Didukung oleh
6. Apa arti "stateless" dalam REST?
Stateless berarti setiap permintaan harus memuat semua informasi yang dibutuhkan server untuk memprosesnya. Server tidak menyimpan konteks klien di antara permintaan.
Ini berarti tidak ada sesi sisi server. Jika pengguna diautentikasi, klien harus mengirim kredensial (biasanya token) pada setiap permintaan.
7. Apa yang membuat sebuah API bersifat RESTful?
Sebuah API benar-benar RESTful ketika memenuhi semua batasan REST, termasuk HATEOAS (Hypermedia as the Engine of Application State). Dalam praktiknya, sebagian besar API yang menyebut dirinya "REST" sebenarnya "mirip REST" atau berada di Level 2 pada Richardson Maturity Model. Dan jujur saja, itu sudah cukup untuk sebagian besar kasus penggunaan.
Tingkat Richardson Maturity Model untuk REST API. Gambar oleh Penulis.
8. Apa saja kode status HTTP dasar yang perlu Anda ketahui?
Anda sebaiknya memahami setidaknya tujuh kode status esensial ini yang mencakup mayoritas skenario API:
Kode
Nama
Kapan Digunakan
200
OK
GET, PUT, PATCH berhasil
201
Created
POST berhasil (sertakan header Location)
204
No Content
DELETE berhasil
400
Bad Request
Sintaks tidak valid
404
Not Found
Sumber daya tidak ada
500
Internal Server Error
Kegagalan di sisi server
9. Apa perbedaan antara resource dan endpoint?
Resource adalah entitas data (pengguna, pesanan, produk). Endpoint adalah path URL yang menyediakan akses ke resource tersebut.
Resource: User
Endpoints: GET /users, GET /users/123, POST /usersDidukung oleh
10. Apa praktik terbaik untuk desain URI?
Gunakan kata benda, bukan kata kerja. Gunakan huruf kecil pada URI dengan tanda hubung untuk nama multi-kata. Gunakan kata benda jamak untuk koleksi.
Good: /users, /users/123, /order-items
Bad: /getUsers, /Users, /order_itemsDidukung oleh
Hindari penurunan tingkat yang terlalu dalam. Alih-alih /users/123/posts/456/comments/789, pertimbangkan /comments/789 atau /comments?post_id=456.
11. Apa itu idempoten dan metode HTTP mana yang idempoten?
Sebuah operasi bersifat idempoten jika menjalankannya berkali-kali menghasilkan hasil yang sama seperti menjalankannya sekali.
Metode
Idempoten
Mengapa
GET
Ya
Membaca tidak mengubah state
PUT
Ya
Mengganti dengan data yang sama menghasilkan hasil yang sama
DELETE
Ya
Menghapus dua kali tetap membuat resource terhapus
POST
Tidak
Membuat dua kali menghasilkan dua resource
PATCH
Tidak*
Tergantung operasinya
PATCH yang mengatur sebuah nilai bersifat idempoten; PATCH yang menambah penghitung tidak.
12. Apa perbedaan antara metode yang aman dan idempoten?
Metode aman tidak memodifikasi sumber daya (GET, HEAD, OPTIONS). Metode idempoten dapat dipanggil berkali-kali dengan efek yang sama (GET, PUT, DELETE).
Semua metode aman adalah idempoten, tetapi tidak semua metode idempoten adalah aman. DELETE bersifat idempoten namun tidak aman karena memodifikasi state.
13. Kapan Anda harus menggunakan parameter kueri versus parameter path?
Parameter path mengidentifikasi resource tertentu. Parameter kueri memfilter, mengurutkan, atau melakukan paginasi pada koleksi.
Path: /users/123 (specific user)
Query: /users?status=active (filtered collection)
/users?sort=name&limit=10Didukung oleh
14. Apa itu content negotiation?
Content negotiation memungkinkan klien meminta representasi berbeda dari suatu resource. Klien mengirim header Accept, dan server merespons dengan format yang sesuai.
Accept: application/json → Server returns JSON
Accept: application/xml → Server returns XMLDidukung oleh
15. Apa tujuan metode OPTIONS?
OPTIONS mengembalikan metode HTTP yang didukung server untuk URL tertentu. Browser menggunakannya untuk permintaan preflight CORS guna memeriksa apakah permintaan lintas origin diizinkan.
Pertanyaan Wawancara REST API Menengah
Pertanyaan-pertanyaan ini menguji penerapan praktis dan pengambilan keputusan. Harapkan untuk posisi level menengah.
16. Apa perbedaan antara 401 dan 403?
Ini adalah pasangan kode status yang paling sering membingungkan. Saya pernah melihat engineer senior tertukar saat code review.
401 Unauthorized
Berarti tidak diautentikasi. Server tidak tahu siapa Anda. Respons Anda harus meminta pengguna untuk masuk.
403 Forbidden
Berarti tidak diotorisasi. Server tahu siapa Anda tetapi Anda tidak memiliki izin. Melakukan autentikasi ulang tidak akan membantu.
Diagram alur keputusan kesalahan autentikasi versus otorisasi. Gambar oleh Penulis.
17. Apa perbedaan antara 400 dan 422?
Berikut contoh yang menggambarkan perbedaannya:
400 Bad Request
Ini menunjukkan sintaks tidak valid. Server tidak dapat mengurai permintaan (struktur JSON tidak valid, header wajib hilang).
422 Unprocessable Entity
Ini menunjukkan sintaks valid tetapi ada kesalahan semantik. JSON valid, tetapi data gagal validasi (format email tidak valid, kata sandi terlalu pendek).
ETag adalah pengidentifikasi versi untuk sebuah resource. Server mengirimkannya dalam respons; klien mengirimkannya kembali dalam permintaan berikutnya untuk memeriksa apakah resource berubah.
# First request
GET /users/123
Response: ETag: "abc123"
# Subsequent request
GET /users/123
If-None-Match: "abc123"
Response: 304 Not Modified (if unchanged)Didukung oleh
22. Metode autentikasi apa yang digunakan untuk REST API?
Empat metode autentikasi yang paling umum adalah API Key, Bearer Token, OAuth 2.0, dan JWT:
Metode
Kasus Penggunaan
Kelebihan
Kekurangan
API Keys
Server ke server
Sederhana
Tidak kedaluwarsa, mudah bocor
Bearer Tokens
Autentikasi sesi
Stateless
Penyimpanan harus aman
OAuth 2.0
Akses pihak ketiga
Autentikasi terdelegasi
Implementasi kompleks
JWT
Autentikasi stateless
Self-contained
Tidak bisa dicabut tanpa blacklist
23. Apa itu JWT dan bagaimana cara kerjanya?
JWT (JSON Web Token) terdiri dari tiga bagian: Header, Payload, dan Signature. Pelajari lebih lanjut tentang bekerja dengan JSON di Python.
Server menandatangani token; klien mengirimkannya bersama permintaan. Server memvalidasi tanda tangan tanpa perlu lookup basis data.
24. Apa perbedaan antara RS256 dan HS256?
HS256 (simetris): Rahasia yang sama untuk menandatangani dan memverifikasi. Berisiko jika banyak layanan perlu memverifikasi token.
RS256 (asimetris): Kunci privat menandatangani, kunci publik memverifikasi. Direkomendasikan untuk sistem terdistribusi di mana banyak layanan memvalidasi token.
25. Apa itu HATEOAS?
HATEOAS (Hypermedia as the Engine of Application State) berarti respons menyertakan tautan ke aksi dan resource terkait.
{"id":123,"name":"Khalid","links":[{"rel":"self","href":"/users/123"},{"rel":"orders","href":"/users/123/orders"}]}Didukung oleh
Dalam praktiknya, sebagian besar API tidak menerapkan HATEOAS sepenuhnya. Ketahui konsepnya tetapi jangan berharap untuk mengimplementasikannya di sebagian besar pekerjaan. Bahkan perusahaan teknologi besar jarang membangun API yang sepenuhnya patuh HATEOAS.
26. Bagaimana Anda menangani kesalahan secara konsisten?
Gunakan format RFC 7807 Problem Details untuk respons kesalahan yang konsisten:
{"type":"https://api.example.com/errors/validation","title":"Validation Error","status":422,"detail":"Email format is invalid","instance":"/users"}Didukung oleh
27. Apa itu rate limiting dan mengapa penting?
Rate limiting melindungi API Anda dari penyalahgunaan dan memastikan penggunaan yang adil. Respons yang umum:
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0Didukung oleh
28. Bagaimana Anda merancang filtering dan sorting?
Gunakan parameter kueri dengan konvensi yang jelas:
# Filtering
GET /products?category=electronics&price[gte]=100&price[lte]=500
# Sorting (prefix - for descending)
GET /users?sort=-created_at,nameDidukung oleh
Pertanyaan Wawancara REST API Lanjutan
Pertanyaan-pertanyaan ini menguji pemikiran arsitektural. Harapkan untuk posisi senior.
29. Apa yang berubah antara OAuth 2.0 dan OAuth 2.1?
OAuth 2.1 mengonsolidasikan praktik terbaik keamanan:
Fitur
OAuth 2.0
OAuth 2.1
PKCE
Opsional
Wajib untuk SEMUA klien
Implicit Grant
Didukung
Dihapus
Password Grant
Didukung
Dihapus
Redirect URI
Pencocokan fleksibel
Harus cocok persis
Inti yang perlu diingat: gunakan Authorization Code flow dengan PKCE untuk semua jenis klien.
30. Bagaimana Anda menerapkan idempotensi untuk endpoint pembayaran?
Gunakan idempotency key agar permintaan POST aman untuk diulang:
asyncdefhandle_payment(request: Request, payment: PaymentCreate):
idempotency_key = request.headers.get("Idempotency-Key")# Check if already processed
cached =await redis.get(f"idem:{idempotency_key}")if cached:return JSONResponse(json.loads(cached))# Process payment
result =await process_payment(payment)# Cache result (24-hour TTL)await redis.setex(f"idem:{idempotency_key}",86400, json.dumps(result))return resultDidukung oleh
Klien menghasilkan UUID dan mengirimkannya bersama permintaan. Jika kunci yang sama datang lagi, kembalikan respons yang di-cache.
31. Bagaimana Anda merancang rate limiter terdistribusi?
Untuk sistem terdistribusi, Anda tidak dapat menggunakan penghitung dalam memori karena lalu lintas dibagi beban di banyak instance. Ini adalah jebakan umum yang sering menyesatkan kandidat.
Arsitektur:
Gunakan Redis untuk penyimpanan penghitung terpusat
Implementasikan algoritma Token Bucket untuk toleransi lonjakan
Gunakan operasi atomik (skrip Lua) untuk mencegah race condition
# Pseudocode for Token Bucket
tokens = redis.get(user_id)or max_tokens
if tokens >0:
redis.decr(user_id)
process_request()else:return429Didukung oleh
32. Kapan Anda memilih gRPC daripada REST?
Pilihan antara gRPC dan REST bergantung pada kebutuhan spesifik Anda.
Pilih gRPC untuk:
Komunikasi antarmikrolayanan internal (peningkatan throughput 5-10x)
Kebutuhan streaming real-time
Mobile-ke-backend dengan keterbatasan bandwidth
Lingkungan poliglot yang memerlukan kontrak ketat
Pilih REST untuk:
API publik dengan konsumen beragam
Aplikasi web (dukungan browser universal)
Operasi CRUD sederhana
Tim yang tidak terbiasa dengan Protocol Buffers
33. Bagaimana Anda menangani operasi yang berjalan lama?
Gunakan pola permintaan asinkron:
Klien mengirim permintaan
Server mengembalikan 202 Accepted dengan URL status
Klien melakukan polling ke URL status hingga selesai
POST /reports
Response: 202 Accepted
Location: /reports/abc123/status
GET /reports/abc123/status
Response: {"status": "processing", "progress": 45}
GET /reports/abc123/status
Response: {"status": "completed", "result_url": "/reports/abc123"}Didukung oleh
34. Apa itu pola Saga?
Saga menangani transaksi terdistribusi di seluruh mikrolayanan tanpa penguncian. Setiap layanan menjalankan transaksi lokal dan memublikasikan event. Jika sebuah langkah gagal, transaksi kompensasi membatalkan langkah sebelumnya.
Order Created → Payment Processed → Inventory Reserved → Order Confirmed
↓ (failure)
Release Payment → Cancel OrderDidukung oleh
35. Apa kerentanan keamanan JWT yang umum?
Kebingungan algoritme Penyerang mengubah RS256 menjadi HS256 dan menandatangani dengan kunci publik. Perbaikan: selalu whitelist algoritme.
# Vulnerable
jwt.decode(token, key)# Secure
jwt.decode(token, key, algorithms=["RS256"])Didukung oleh
Pertanyaan-pertanyaan ini berfokus pada detail implementasi sisi server, optimasi basis data, dan pola kinerja yang dihadapi engineer backend setiap hari.
36. Apa itu masalah kueri N+1?
Masalah N+1 terjadi ketika Anda mengambil N record dan kemudian menjalankan kueri terpisah untuk setiap relasi record tersebut.
# N+1 Problem: 101 queries for 100 users
users = User.query.all()# 1 queryfor user in users:print(user.posts)# 100 queriesDidukung oleh
Solusi:
Django: Gunakan select_related() untuk foreign key, prefetch_related() untuk many-to-many.
# 2 queries instead of 101
users = User.objects.prefetch_related('posts').all()Didukung oleh
SQLAlchemy: Gunakan joinedload() atau selectinload().
37. Bagaimana Anda mengonfigurasi connection pooling?
Connection pooling menggunakan kembali koneksi basis data alih-alih membuat yang baru untuk setiap permintaan.
# SQLAlchemy
engine = create_engine("postgresql://user:pass@host/db",
pool_size=5,# Permanent connections
max_overflow=10,# Temporary overflow
pool_timeout=30,# Wait timeout
pool_pre_ping=True# Validate before use)Didukung oleh
38. Strategi caching apa yang Anda ketahui?
Ada tiga strategi caching utama, masing-masing dioptimalkan untuk pola akses berbeda:
Strategi
Deskripsi
Kasus Penggunaan
Cache-Aside
Aplikasi memeriksa cache, lalu DB
Beban baca tinggi, mentoleransi stale
Write-Through
Menulis ke cache dan DB bersamaan
Konsistensi kritis
Write-Behind
Menulis ke cache, pembaruan DB asinkron
Throughput tulis tinggi
39. Bagaimana Anda menerapkan verifikasi tanda tangan webhook?
Verifikasi tanda tangan webhook memastikan permintaan benar-benar berasal dari pengirim yang diharapkan. Berikut implementasi menggunakan HMAC:
Anda harus memantau empat metrik kunci ini untuk menilai kesehatan API Anda:
Metrik
Deskripsi
Ambang Peringatan
P50 Latency
Waktu respons median
Baseline
P99 Latency
1% paling lambat
> 2s selama 5 menit
Error Rate
% dari 4xx/5xx
> 1% selama 5 menit
Throughput
Permintaan per detik
Perencanaan kapasitas
Pertanyaan REST API untuk Pengembang Full Stack
Pertanyaan-pertanyaan ini menguji pemahaman Anda tentang sisi klien dan server, khususnya keamanan browser, manajemen state, dan komunikasi lintas origin.
Content-Type selain form-urlencoded, multipart/form-data, text/plain
42. Bagaimana Anda mengonfigurasi CORS secara aman?
Konfigurasi CORS yang aman memerlukan whitelist origin secara eksplisit dan penanganan kredensial dengan hati-hati. Berikut pengaturan Express.js yang aman:
// Express.js
app.use(cors({origin:['https://yourdomain.com'],// Never use * with credentialscredentials:true,methods:['GET','POST','PUT','DELETE'],allowedHeaders:['Content-Type','Authorization']}));Didukung oleh
Jangan pernah gunakan wildcard (*) dengan kredensial. Jangan pernah mengizinkan origin null.
43. Di mana Anda harus menyimpan token di sisi klien?
Penyimpanan token melibatkan trade-off keamanan antara kerentanan XSS dan CSRF"
Penyimpanan
Risiko XSS
Risiko CSRF
Rekomendasi
localStorage
Tinggi
Tidak ada
Hindari untuk token
HttpOnly Cookie
Rendah
Perlu mitigasi
Direkomendasikan
In-memory
Rendah
Rendah
Terbaik untuk access token
Praktik terbaik: Simpan refresh token di cookie HttpOnly denganSameSite=Strict. Simpan access token di memori.
44. Kapan Anda harus menggunakan WebSocket versus SSE?
Pilihan bergantung pada apakah Anda memerlukan komunikasi dua arah dan bagaimana Anda ingin menangani penyambungan ulang:
Fitur
WebSocket
SSE
Arah
Dua arah
Server ke klien
Penyambungan ulang
Manual
Otomatis
Data biner
Ya
Tidak
Gunakan SSE untuk notifikasi, umpan langsung, ticker saham. Gunakan WebSocket untuk chat, gim multipemain, pengeditan kolaboratif.
45. Bagaimana Anda menangani pengunggahan file?
Untuk file besar, gunakan unggah bertahap (chunked) dengan pelacakan progres:
asyncfunctionchunkedUpload(file, chunkSize =5*1024*1024){const totalChunks = Math.ceil(file.size / chunkSize);for(let i =0; i < totalChunks; i++){const chunk = file.slice(i * chunkSize,(i +1)* chunkSize);awaituploadChunk(uploadId, i, chunk);}}Didukung oleh
Pertanyaan REST API Berbasis Skenario
Pertanyaan-pertanyaan ini mengevaluasi kemampuan Anda menerapkan prinsip REST pada masalah dunia nyata. Pewawancara ingin melihat proses desain Anda dan bagaimana Anda membuat trade-off arsitektural.
46. Rancang REST API untuk sistem pemesanan hotel
Sistem pemesanan hotel perlu menangani pencarian, pemeriksaan ketersediaan, dan reservasi sekaligus mencegah double-booking. Berikut resource intinya:
Resource:
/hotels - Daftar dan cari hotel
/hotels/{id}/rooms - Kamar yang tersedia
/bookings - Membuat dan mengelola pemesanan
/guests/{id} - Profil tamu
Keputusan kunci:
Gunakan paginasi berbasis kursor untuk pencarian hotel
Terapkan optimistic locking untuk ketersediaan kamar
Kembalikan 409 Conflict untuk upaya double-booking
Gunakan idempotency key untuk pemrosesan pembayaran
47. Bagaimana Anda mengimplementasikan soft delete?
@app.delete("/users/{user_id}")defdelete_user(user_id:int):
user = db.get(user_id)
user.deleted_at = datetime.utcnow()
db.commit()return Response(status_code=204)@app.get("/users")deflist_users(include_deleted:bool=False):
query = User.query
ifnot include_deleted:
query = query.filter(User.deleted_at.is_(None))return query.all()Didukung oleh
48. Bagaimana Anda bermigrasi dari v1 ke v2 tanpa merusak klien?
Gunakan pola Strangler Fig:
Deploy v2 berdampingan dengan v1
Arahkan fitur baru ke v2
Secara bertahap migrasikan endpoint yang ada
Komunikasikan deprecasi melalui header Sunset
Hapus v1 setelah periode migrasi
49. Bagaimana Anda merancang API pencarian dengan penyaringan kompleks?
Untuk pencarian produk dengan banyak filter:
GET /products?q=laptop&category=electronics&price[gte]=500&price[lte]=2000&brand=apple,dell&in_stock=true&sort=-rating&limit=20&cursor=abc123Didukung oleh
Keputusan desain:
Gunakan Elasticsearch untuk pencarian full-text (basis data relasional kesulitan menangani pencocokan fuzzy)
Terapkan faceted search untuk menampilkan opsi filter yang tersedia
Kembalikan jumlah filter sehingga pengguna tahu berapa hasil untuk tiap filter
Cache kombinasi pencarian populer
50. Bagaimana Anda menangani versioning API dalam arsitektur mikrolayanan?
Opsi:
Versioning di tingkat gateway: API gateway merutekan /v1/* ke layanan lama, /v2/*ke layanan baru
Versioning di tingkat layanan: Setiap layanan menangani negosiasi versinya sendiri
Kontrak yang didorong konsumen: Gunakan Pact atau alat serupa untuk memastikan kompatibilitas
Untuk sebagian besar tim, versioning di tingkat gateway memberikan pemisahan yang paling bersih.
51. Bagaimana Anda menerapkan rate limiting untuk tier pengguna yang berbeda?
Solusinya melibatkan penentuan limit khusus per tier dan memeriksanya menggunakan penghitung Redis:
Pertanyaan-pertanyaan ini menilai keterampilan komunikasi Anda dan bagaimana Anda menangani tantangan API dunia nyata. Fokuslah menunjukkan proses pemecahan masalah Anda dan bagaimana Anda bekerja dengan pemangku kepentingan.
52. Jelaskan REST kepada orang non-teknis
"Bayangkan REST API seperti pelayan di restoran. Anda (pelanggan) tidak bisa langsung masuk ke dapur. Sebagai gantinya, Anda memberi tahu pelayan apa yang Anda inginkan dari menu, dan mereka membawakannya. Menu itu seperti dokumentasi API, mencantumkan apa yang bisa Anda pesan. Pelayan mengikuti aturan tertentu: Anda meminta sesuatu (GET), Anda memesan sesuatu yang baru (POST), atau Anda mengembalikan sesuatu (DELETE). Jika dapur kehabisan sesuatu, pelayan memberi tahu Anda (404 Not Found) sehingga Anda tidak menunggu selamanya."
Analogi ini terbukti cukup efektif dalam rapat dengan pemangku kepentingan.
53. Jelaskan saat Anda mengoptimalkan sebuah API
Gunakan metode STAR:
Situation: "API pencarian kami memiliki waktu respons 3 detik selama lalu lintas puncak"
Task: "Saya perlu menurunkan latensi tanpa perubahan arsitektur besar"
Action: "Saya menambahkan caching Redis untuk kueri sering, menerapkan paginasi berbasis kursor, dan menambahkan indeks basis data"
Result: "Waktu respons turun menjadi 200ms, dan kami menangani 5x lebih banyak lalu lintas"
54. Bagaimana Anda mengomunikasikan breaking changes kepada konsumen API?
Umumkan lebih awal: Beri pemberitahuan setidaknya 6-12 bulan untuk perubahan besar
Gunakan header Sunset: Sunset: Sat, 31 Dec 2026 23:59:59 GMT
Sediakan panduan migrasi: Dokumentasikan dengan jelas apa yang berubah dan cara beradaptasi
Jalankan kedua versi: Pertahankan versi lama tetap berjalan selama transisi
Pantau penggunaan: Lacak klien mana yang masih menggunakan versi lama
55. Dokumentasi apa yang Anda buat untuk API?
Dokumentasi esensial mencakup:
Spesifikasi OpenAPI/Swagger: Kontrak yang dapat dibaca mesin
Panduan memulai: Panggilan API pertama dalam waktu kurang dari 5 menit
Panduan autentikasi: Cara memperoleh dan menggunakan kredensial
Referensi kesalahan: Semua kode kesalahan yang mungkin dan cara menanganinya
Changelog: Perubahan pada setiap versi
Dokumentasi rate limit: Batas per tier dan cara menangani 429
56. Kapan Anda TIDAK menggunakan REST?
REST tidak selalu pilihan yang tepat. Mengetahui kapan menggunakan alternatif menunjukkan kedewasaan arsitektural. Saya melihat tim memaksakan REST pada use case yang justru menimbulkan lebih banyak masalah daripada manfaat.
Gunakan bagian ini sebagai rujukan cepat saat Anda perlu memverifikasi properti metode HTTP, kode status, atau pola umum saat persiapan wawancara atau pengembangan nyata.
Perbandingan Metode HTTP
Tabel ini merangkum properti kunci setiap metode HTTP, membantu Anda memilih yang tepat untuk kasus penggunaan Anda.
Metode
Aman
Idempoten
Dapat di-cache
Penggunaan Umum
GET
Ya
Ya
Ya
Mengambil resource
POST
Tidak
Tidak
Kondisional
Membuat resource
PUT
Tidak
Ya
Tidak
Mengganti resource
PATCH
Tidak
Tidak
Kondisional
Pembaruan parsial
DELETE
Tidak
Ya
Tidak
Menghapus resource
HEAD
Ya
Ya
Ya
Hanya mengambil header
OPTIONS
Ya
Ya
Tidak
Preflight CORS
Referensi Kode Status
Berikut kode status HTTP yang paling umum digunakan, diorganisasi berdasarkan kategori. Fokuslah memahami kapan menggunakannya daripada menghafal seluruh spesifikasi.
2xx Sukses
200 OK: GET, PUT, PATCH berhasil
201 Created: POST berhasil (sertakan header Location)
204 No Content: DELETE berhasil
4xx Kesalahan Klien
400 Bad Request: Sintaks tidak valid
401 Unauthorized: Perlu autentikasi
403 Forbidden: Diautentikasi tetapi tidak diotorisasi
404 Not Found: Resource tidak ada
409 Conflict: Konflik state
422 Unprocessable Entity: Kesalahan validasi
429 Too Many Requests: Terkena rate limit
5xx Kesalahan Server
500 Internal Server Error: Kegagalan server umum
502 Bad Gateway: Kesalahan server hulu
503 Service Unavailable: Sementara kelebihan beban
Kesalahan Umum yang Perlu Dihindari
Bahkan pengembang berpengalaman pun bisa terjebak. Waspadai jebakan umum berikut saat merancang atau mengimplementasikan REST API:
Menggunakan kata kerja dalam URL (mis., /getUsers alih-alih /users)
Mengembalikan 200 OK untuk kondisi error, yang merusak penanganan error di sisi klien
Membingungkan 401 dan 403 (Autentikasi vs. Otorisasi)
Menumpuk URL terlalu dalam lebih dari dua level
Menyimpan token di localStorage (menimbulkan kerentanan XSS)
Mengabaikan idempotensi untuk permintaan POST
Mengembalikan pesan error generik tanpa detail yang dapat ditindaklanjuti
Kesimpulan
Saya menyadari bahwa menghafal definisi tidak akan menjamin Anda lulus setiap wawancara teknis. Kenyataannya adalah rekayasa di dunia nyata sering kali membutuhkan pelanggaran terhadap "aturan" ketat yang baru saja kita bahas, dan pewawancara lebih peduli pada penalaran Anda daripada kemampuan Anda mengutip spesifikasi RFC. Untuk peran yang sangat khusus, pengetahuan domain mendalam atau keahlian kerangka kerja tertentu mungkin tetap menjadi faktor penentu.
Namun menguasai dasar-dasar REST tetap penting meskipun Anda tidak menemui pertanyaan-pertanyaan yang persis sama. Ini menjadi cetak biru untuk memahami cara kerja web modern. Ketika Anda diminta merancang sistem baru atau men-debug gangguan produksi, memahami perbedaan antara 401 dan 403 (seperti yang saya jelaskan sebelumnya) memberi Anda kejelasan untuk memecahkan masalah lebih cepat. Anda akan menyadari mengapa standarisasi interaksi API Anda, bukan sekadar menulis kode yang berfungsi, adalah ciri khas engineer senior.
Saya seorang data engineer dan pembangun komunitas yang bekerja lintas pipeline data, cloud, dan perkakas AI sambil menulis tutorial praktis dan berdampak tinggi untuk DataCamp dan pengembang yang sedang berkembang.
FAQs
Haruskah saya menghafal spesifikasi RFC untuk metode HTTP?⌄
Tentu saja tidak. Pewawancara ingin melihat bahwa Anda memahami implikasi praktisnya, bukan mengutip dokumentasi. Fokus pada alasan idempotensi penting ketika permintaan jaringan gagal dan perlu diulang. Itulah yang membedakan pola pikir junior dan senior.
Bagaimana jika saya ditanya tentang SOAP atau XML-RPC pada 2026?⌄
Itu terjadi lebih sering daripada yang Anda kira, terutama untuk peran di bank, layanan kesehatan, atau kontraktor pemerintah. Kuncinya adalah menjelaskan mengapa protokol lama ini masih ada (kontrak ketat, keamanan tingkat pesan) alih-alih menolaknya sebagai usang. Tunjukkan bahwa Anda memahami trade-off, bukan hanya tren.
Bagaimana saya berlatih desain API tanpa proyek nyata?⌄
Pilih layanan yang Anda gunakan setiap hari (Spotify, Twitter, sistem pemesanan gym Anda) dan buat sketsa bagaimana Anda akan merancang API-nya. Endpoint apa yang akan Anda buat? Bagaimana Anda menangani paginasi untuk playlist pengguna dengan 10.000 lagu? Latihan ini dengan cepat mengungkap celah dalam pemahaman Anda.
Apakah pewawancara benar-benar menguji OAuth 2.1, atau OAuth 2.0 masih dominan?⌄
Sebagian besar perusahaan masih menggunakan OAuth 2.0, tetapi mengetahui bahwa 2.1 mewajibkan PKCE untuk semua klien menunjukkan bahwa Anda mengikuti praktik terbaik keamanan terkini. Sebutkan ini sebagai "arah yang dituju industri" alih-alih berasumsi semua orang sudah sampai di sana.
Apa satu hal yang paling sering menjebak kandidat?⌄
Tidak mengajukan pertanyaan klarifikasi saat desain sistem. Ketika diminta untuk "merancang sebuah API," kandidat langsung lompat ke endpoint tanpa menanyakan tentang skala, persyaratan konsistensi, atau apakah ini internal atau untuk publik. Jawaban terbaik dimulai dengan pertanyaan, bukan solusi.
Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Bangun API yang andal dan siap produksi dengan FastAPI, kuasai operasi HTTP, validasi, dan eksekusi asinkron untuk menciptakan alur data dan ML yang efisien.
REST API menggerakkan sebagian besar integrasi di internet. Baik Anda melamar peran backend, posisi full stack, atau pekerjaan rekayasa perangkat lunak, Anda kemungkinan akan menghadapi pertanyaan tentang desain REST API, metode HTTP, dan pola autentikasi.
Dalam panduan ini, saya akan mengajak Anda menelusuri pertanyaan-pertanyaan yang benar-benar diajukan oleh pewawancara. Saya mengelompokkannya berdasarkan tingkat kesulitan dan jenis peran, sehingga Anda bisa fokus pada hal yang paling relevan untuk posisi target Anda. Setiap jawaban mencakup contoh praktis dan, jika relevan, cuplikan kode yang dapat Anda adaptasi.
Satu hal yang perlu diingat: pewawancara jauh lebih sering menguji dasar-dasar daripada topik tingkat lanjut. Jika Anda menguasai hal-hal mendasar (metode HTTP, kode status, stateless), Anda akan menghadapi sebagian besar wawancara REST API dengan percaya diri. Pola arsitektur yang canggih menyusul kemudian.
Pertanyaan Wawancara REST API Dasar
Pertanyaan-pertanyaan ini menguji pengetahuan fundamental Anda. Harapkan muncul di hampir setiap wawancara, terlepas dari tingkat senioritas.
1. Apa itu REST dan apa saja batasannya?
REST adalah singkatan dari Representational State Transfer. Ini adalah gaya arsitektur untuk merancang aplikasi jaringan, didefinisikan oleh Roy Fielding dalam disertasi doktoralnya tahun 2000.
REST memiliki enam batasan:
2. Apa perbedaan antara REST dan SOAP?
REST adalah gaya arsitektur; SOAP adalah protokol. REST biasanya menggunakan JSON di atas HTTP dan memanfaatkan metode HTTP standar. SOAP menggunakan XML secara eksklusif dan mendefinisikan format pesan sendiri dengan amplop dan header.
Aspek
REST
SOAP
Format
JSON, XML, lainnya
Hanya XML
Transport
HTTP
HTTP, SMTP, lainnya
Caching
Caching HTTP bawaan
Tidak dapat di-cache
Kinerja
Ringan
Overhead lebih tinggi
SOAP masih masuk akal untuk sistem enterprise yang memerlukan kontrak formal (WSDL) atau keamanan tingkat pesan (WS-Security).
3. Apa itu metode HTTP dan kapan Anda menggunakan masing-masing?
Metode HTTP mendefinisikan aksi yang akan dilakukan pada suatu sumber daya.
Metode
Tujuan
Contoh
GETMengambil sumber daya
GET /users/123POSTMembuat sumber daya baru
POST /usersPUTMengganti seluruh sumber daya
PUT /users/123PATCHMemperbarui sebagian sumber daya
PATCH /users/123DELETEMenghapus sumber daya
DELETE /users/1234. Apa perbedaan antara PUT dan POST?
POST membuat sumber daya baru di mana server menentukan URI. PUT menggantikan sumber daya pada URI spesifik yang ditentukan klien.
Jika Anda melakukan PUT ke URI yang belum ada, server mungkin akan membuatnya. Jika Anda melakukan PUT ke URI yang sudah ada, Anda mengganti seluruh sumber daya.
5. Apa perbedaan antara PUT dan PATCH?
PUT menggantikan seluruh sumber daya. PATCH menerapkan modifikasi parsial.
6. Apa arti "stateless" dalam REST?
Stateless berarti setiap permintaan harus memuat semua informasi yang dibutuhkan server untuk memprosesnya. Server tidak menyimpan konteks klien di antara permintaan.
Ini berarti tidak ada sesi sisi server. Jika pengguna diautentikasi, klien harus mengirim kredensial (biasanya token) pada setiap permintaan.
7. Apa yang membuat sebuah API bersifat RESTful?
Sebuah API benar-benar RESTful ketika memenuhi semua batasan REST, termasuk HATEOAS (Hypermedia as the Engine of Application State). Dalam praktiknya, sebagian besar API yang menyebut dirinya "REST" sebenarnya "mirip REST" atau berada di Level 2 pada Richardson Maturity Model. Dan jujur saja, itu sudah cukup untuk sebagian besar kasus penggunaan.
Tingkat Richardson Maturity Model untuk REST API. Gambar oleh Penulis.
8. Apa saja kode status HTTP dasar yang perlu Anda ketahui?
Anda sebaiknya memahami setidaknya tujuh kode status esensial ini yang mencakup mayoritas skenario API:
Kode
Nama
Kapan Digunakan
200
OK
GET, PUT, PATCH berhasil
201
Created
POST berhasil (sertakan header Location)
204
No Content
DELETE berhasil
400
Bad Request
Sintaks tidak valid
404
Not Found
Sumber daya tidak ada
500
Internal Server Error
Kegagalan di sisi server
9. Apa perbedaan antara resource dan endpoint?
Resource adalah entitas data (pengguna, pesanan, produk). Endpoint adalah path URL yang menyediakan akses ke resource tersebut.
10. Apa praktik terbaik untuk desain URI?
Gunakan kata benda, bukan kata kerja. Gunakan huruf kecil pada URI dengan tanda hubung untuk nama multi-kata. Gunakan kata benda jamak untuk koleksi.
Hindari penurunan tingkat yang terlalu dalam. Alih-alih
/users/123/posts/456/comments/789, pertimbangkan/comments/789atau/comments?post_id=456.11. Apa itu idempoten dan metode HTTP mana yang idempoten?
Sebuah operasi bersifat idempoten jika menjalankannya berkali-kali menghasilkan hasil yang sama seperti menjalankannya sekali.
Metode
Idempoten
Mengapa
GETYa
Membaca tidak mengubah state
PUTYa
Mengganti dengan data yang sama menghasilkan hasil yang sama
DELETEYa
Menghapus dua kali tetap membuat resource terhapus
POSTTidak
Membuat dua kali menghasilkan dua resource
PATCHTidak*
Tergantung operasinya
PATCH yang mengatur sebuah nilai bersifat idempoten; PATCH yang menambah penghitung tidak.
12. Apa perbedaan antara metode yang aman dan idempoten?
Metode aman tidak memodifikasi sumber daya (GET, HEAD, OPTIONS). Metode idempoten dapat dipanggil berkali-kali dengan efek yang sama (GET, PUT, DELETE).
Semua metode aman adalah idempoten, tetapi tidak semua metode idempoten adalah aman. DELETE bersifat idempoten namun tidak aman karena memodifikasi state.
13. Kapan Anda harus menggunakan parameter kueri versus parameter path?
Parameter path mengidentifikasi resource tertentu. Parameter kueri memfilter, mengurutkan, atau melakukan paginasi pada koleksi.
14. Apa itu content negotiation?
Content negotiation memungkinkan klien meminta representasi berbeda dari suatu resource. Klien mengirim header
Accept, dan server merespons dengan format yang sesuai.15. Apa tujuan metode OPTIONS?
OPTIONS mengembalikan metode HTTP yang didukung server untuk URL tertentu. Browser menggunakannya untuk permintaan preflight CORS guna memeriksa apakah permintaan lintas origin diizinkan.
Pertanyaan Wawancara REST API Menengah
Pertanyaan-pertanyaan ini menguji penerapan praktis dan pengambilan keputusan. Harapkan untuk posisi level menengah.
16. Apa perbedaan antara 401 dan 403?
Ini adalah pasangan kode status yang paling sering membingungkan. Saya pernah melihat engineer senior tertukar saat code review.
401 Unauthorized
Berarti tidak diautentikasi. Server tidak tahu siapa Anda. Respons Anda harus meminta pengguna untuk masuk.
403 Forbidden
Berarti tidak diotorisasi. Server tahu siapa Anda tetapi Anda tidak memiliki izin. Melakukan autentikasi ulang tidak akan membantu.
Diagram alur keputusan kesalahan autentikasi versus otorisasi. Gambar oleh Penulis.
17. Apa perbedaan antara 400 dan 422?
Berikut contoh yang menggambarkan perbedaannya:
400 Bad Request
Ini menunjukkan sintaks tidak valid. Server tidak dapat mengurai permintaan (struktur JSON tidak valid, header wajib hilang).
422 Unprocessable Entity
Ini menunjukkan sintaks valid tetapi ada kesalahan semantik. JSON valid, tetapi data gagal validasi (format email tidak valid, kata sandi terlalu pendek).
18. Kapan Anda harus menggunakan 409 Conflict?
Gunakan 409 ketika permintaan bertentangan dengan keadaan saat ini dari resource:
19. Bagaimana Anda menerapkan paginasi?
Dua pendekatan utama:
Paginasi berbasis offset
Sederhana tetapi memiliki masalah kinerja dengan dataset besar.
Paginasi berbasis kursor
Lebih skalabel dan menghindari "pergeseran halaman" saat data berubah.
Perusahaan seperti Stripe, GitHub, dan Slack menggunakan paginasi berbasis kursor untuk dataset besar.
20. Apa strategi versioning API yang umum?
Ada tiga pendekatan utama, masing-masing dengan trade-off berbeda:
Versioning URI
Ini yang paling umum. Eksplisit dan mudah di-debug.
Versioning header
URL lebih bersih tetapi lebih sulit diuji di browser.
Versioning parameter kueri
Mudah ditambahkan tetapi membuat URL berantakan.
21. Apa itu ETag dan bagaimana caching bekerja?
ETag adalah pengidentifikasi versi untuk sebuah resource. Server mengirimkannya dalam respons; klien mengirimkannya kembali dalam permintaan berikutnya untuk memeriksa apakah resource berubah.
22. Metode autentikasi apa yang digunakan untuk REST API?
Empat metode autentikasi yang paling umum adalah API Key, Bearer Token, OAuth 2.0, dan JWT:
Metode
Kasus Penggunaan
Kelebihan
Kekurangan
API Keys
Server ke server
Sederhana
Tidak kedaluwarsa, mudah bocor
Bearer Tokens
Autentikasi sesi
Stateless
Penyimpanan harus aman
OAuth 2.0
Akses pihak ketiga
Autentikasi terdelegasi
Implementasi kompleks
JWT
Autentikasi stateless
Self-contained
Tidak bisa dicabut tanpa blacklist
23. Apa itu JWT dan bagaimana cara kerjanya?
JWT (JSON Web Token) terdiri dari tiga bagian: Header, Payload, dan Signature. Pelajari lebih lanjut tentang bekerja dengan JSON di Python.
Server menandatangani token; klien mengirimkannya bersama permintaan. Server memvalidasi tanda tangan tanpa perlu lookup basis data.
24. Apa perbedaan antara RS256 dan HS256?
HS256 (simetris): Rahasia yang sama untuk menandatangani dan memverifikasi. Berisiko jika banyak layanan perlu memverifikasi token.
RS256 (asimetris): Kunci privat menandatangani, kunci publik memverifikasi. Direkomendasikan untuk sistem terdistribusi di mana banyak layanan memvalidasi token.
25. Apa itu HATEOAS?
HATEOAS (Hypermedia as the Engine of Application State) berarti respons menyertakan tautan ke aksi dan resource terkait.
Dalam praktiknya, sebagian besar API tidak menerapkan HATEOAS sepenuhnya. Ketahui konsepnya tetapi jangan berharap untuk mengimplementasikannya di sebagian besar pekerjaan. Bahkan perusahaan teknologi besar jarang membangun API yang sepenuhnya patuh HATEOAS.
26. Bagaimana Anda menangani kesalahan secara konsisten?
Gunakan format RFC 7807 Problem Details untuk respons kesalahan yang konsisten:
27. Apa itu rate limiting dan mengapa penting?
Rate limiting melindungi API Anda dari penyalahgunaan dan memastikan penggunaan yang adil. Respons yang umum:
28. Bagaimana Anda merancang filtering dan sorting?
Gunakan parameter kueri dengan konvensi yang jelas:
Pertanyaan Wawancara REST API Lanjutan
Pertanyaan-pertanyaan ini menguji pemikiran arsitektural. Harapkan untuk posisi senior.
29. Apa yang berubah antara OAuth 2.0 dan OAuth 2.1?
OAuth 2.1 mengonsolidasikan praktik terbaik keamanan:
Fitur
OAuth 2.0
OAuth 2.1
PKCE
Opsional
Wajib untuk SEMUA klien
Implicit Grant
Didukung
Dihapus
Password Grant
Didukung
Dihapus
Redirect URI
Pencocokan fleksibel
Harus cocok persis
Inti yang perlu diingat: gunakan Authorization Code flow dengan PKCE untuk semua jenis klien.
30. Bagaimana Anda menerapkan idempotensi untuk endpoint pembayaran?
Gunakan idempotency key agar permintaan POST aman untuk diulang:
Klien menghasilkan UUID dan mengirimkannya bersama permintaan. Jika kunci yang sama datang lagi, kembalikan respons yang di-cache.
31. Bagaimana Anda merancang rate limiter terdistribusi?
Untuk sistem terdistribusi, Anda tidak dapat menggunakan penghitung dalam memori karena lalu lintas dibagi beban di banyak instance. Ini adalah jebakan umum yang sering menyesatkan kandidat.
Arsitektur:
32. Kapan Anda memilih gRPC daripada REST?
Pilihan antara gRPC dan REST bergantung pada kebutuhan spesifik Anda.
Pilih gRPC untuk:
Pilih REST untuk:
33. Bagaimana Anda menangani operasi yang berjalan lama?
Gunakan pola permintaan asinkron:
Klien mengirim permintaan
Server mengembalikan
202 Accepteddengan URL statusKlien melakukan polling ke URL status hingga selesai
34. Apa itu pola Saga?
Saga menangani transaksi terdistribusi di seluruh mikrolayanan tanpa penguncian. Setiap layanan menjalankan transaksi lokal dan memublikasikan event. Jika sebuah langkah gagal, transaksi kompensasi membatalkan langkah sebelumnya.
35. Apa kerentanan keamanan JWT yang umum?
Kebingungan algoritme Penyerang mengubah RS256 menjadi HS256 dan menandatangani dengan kunci publik. Perbaikan: selalu whitelist algoritme.
Algoritme "none": Penyerang menghapus tanda tangan sepenuhnya. Perbaikan: tolak algoritme "none".
Pertanyaan REST API untuk Pengembang Backend
Pertanyaan-pertanyaan ini berfokus pada detail implementasi sisi server, optimasi basis data, dan pola kinerja yang dihadapi engineer backend setiap hari.
36. Apa itu masalah kueri N+1?
Masalah N+1 terjadi ketika Anda mengambil N record dan kemudian menjalankan kueri terpisah untuk setiap relasi record tersebut.
Solusi:
Django: Gunakan
select_related()untuk foreign key,prefetch_related()untuk many-to-many.SQLAlchemy: Gunakan
joinedload()atauselectinload().37. Bagaimana Anda mengonfigurasi connection pooling?
Connection pooling menggunakan kembali koneksi basis data alih-alih membuat yang baru untuk setiap permintaan.
38. Strategi caching apa yang Anda ketahui?
Ada tiga strategi caching utama, masing-masing dioptimalkan untuk pola akses berbeda:
Strategi
Deskripsi
Kasus Penggunaan
Cache-Aside
Aplikasi memeriksa cache, lalu DB
Beban baca tinggi, mentoleransi stale
Write-Through
Menulis ke cache dan DB bersamaan
Konsistensi kritis
Write-Behind
Menulis ke cache, pembaruan DB asinkron
Throughput tulis tinggi
39. Bagaimana Anda menerapkan verifikasi tanda tangan webhook?
Verifikasi tanda tangan webhook memastikan permintaan benar-benar berasal dari pengirim yang diharapkan. Berikut implementasi menggunakan HMAC:
40. Metrik apa yang menunjukkan kesehatan API?
Anda harus memantau empat metrik kunci ini untuk menilai kesehatan API Anda:
Metrik
Deskripsi
Ambang Peringatan
P50 Latency
Waktu respons median
Baseline
P99 Latency
1% paling lambat
> 2s selama 5 menit
Error Rate
% dari 4xx/5xx
> 1% selama 5 menit
Throughput
Permintaan per detik
Perencanaan kapasitas
Pertanyaan REST API untuk Pengembang Full Stack
Pertanyaan-pertanyaan ini menguji pemahaman Anda tentang sisi klien dan server, khususnya keamanan browser, manajemen state, dan komunikasi lintas origin.
41. Kapan browser mengirim permintaan preflight CORS?
Browser mengirim OPTIONS preflight untuk:
42. Bagaimana Anda mengonfigurasi CORS secara aman?
Konfigurasi CORS yang aman memerlukan whitelist origin secara eksplisit dan penanganan kredensial dengan hati-hati. Berikut pengaturan Express.js yang aman:
Jangan pernah gunakan wildcard (
*) dengan kredensial. Jangan pernah mengizinkan originnull.43. Di mana Anda harus menyimpan token di sisi klien?
Penyimpanan token melibatkan trade-off keamanan antara kerentanan XSS dan CSRF"
Penyimpanan
Risiko XSS
Risiko CSRF
Rekomendasi
localStorage
Tinggi
Tidak ada
Hindari untuk token
HttpOnly Cookie
Rendah
Perlu mitigasi
Direkomendasikan
In-memory
Rendah
Rendah
Terbaik untuk access token
Praktik terbaik: Simpan refresh token di cookie HttpOnly dengan
SameSite=Strict. Simpan access token di memori.44. Kapan Anda harus menggunakan WebSocket versus SSE?
Pilihan bergantung pada apakah Anda memerlukan komunikasi dua arah dan bagaimana Anda ingin menangani penyambungan ulang:
Fitur
WebSocket
SSE
Arah
Dua arah
Server ke klien
Penyambungan ulang
Manual
Otomatis
Data biner
Ya
Tidak
Gunakan SSE untuk notifikasi, umpan langsung, ticker saham. Gunakan WebSocket untuk chat, gim multipemain, pengeditan kolaboratif.
45. Bagaimana Anda menangani pengunggahan file?
Untuk file besar, gunakan unggah bertahap (chunked) dengan pelacakan progres:
Pertanyaan REST API Berbasis Skenario
Pertanyaan-pertanyaan ini mengevaluasi kemampuan Anda menerapkan prinsip REST pada masalah dunia nyata. Pewawancara ingin melihat proses desain Anda dan bagaimana Anda membuat trade-off arsitektural.
46. Rancang REST API untuk sistem pemesanan hotel
Sistem pemesanan hotel perlu menangani pencarian, pemeriksaan ketersediaan, dan reservasi sekaligus mencegah double-booking. Berikut resource intinya:
Resource:
/hotels- Daftar dan cari hotel/hotels/{id}/rooms- Kamar yang tersedia/bookings- Membuat dan mengelola pemesanan/guests/{id}- Profil tamuKeputusan kunci:
47. Bagaimana Anda mengimplementasikan soft delete?
Tambahkan timestamp
deleted_atalih-alih menghapus record:48. Bagaimana Anda bermigrasi dari v1 ke v2 tanpa merusak klien?
Gunakan pola Strangler Fig:
49. Bagaimana Anda merancang API pencarian dengan penyaringan kompleks?
Untuk pencarian produk dengan banyak filter:
Keputusan desain:
50. Bagaimana Anda menangani versioning API dalam arsitektur mikrolayanan?
Opsi:
Versioning di tingkat gateway: API gateway merutekan
/v1/*ke layanan lama,/v2/*ke layanan baruVersioning di tingkat layanan: Setiap layanan menangani negosiasi versinya sendiri
Kontrak yang didorong konsumen: Gunakan Pact atau alat serupa untuk memastikan kompatibilitas
Untuk sebagian besar tim, versioning di tingkat gateway memberikan pemisahan yang paling bersih.
51. Bagaimana Anda menerapkan rate limiting untuk tier pengguna yang berbeda?
Solusinya melibatkan penentuan limit khusus per tier dan memeriksanya menggunakan penghitung Redis:
Pertanyaan REST API Perilaku
Pertanyaan-pertanyaan ini menilai keterampilan komunikasi Anda dan bagaimana Anda menangani tantangan API dunia nyata. Fokuslah menunjukkan proses pemecahan masalah Anda dan bagaimana Anda bekerja dengan pemangku kepentingan.
52. Jelaskan REST kepada orang non-teknis
"Bayangkan REST API seperti pelayan di restoran. Anda (pelanggan) tidak bisa langsung masuk ke dapur. Sebagai gantinya, Anda memberi tahu pelayan apa yang Anda inginkan dari menu, dan mereka membawakannya. Menu itu seperti dokumentasi API, mencantumkan apa yang bisa Anda pesan. Pelayan mengikuti aturan tertentu: Anda meminta sesuatu (GET), Anda memesan sesuatu yang baru (POST), atau Anda mengembalikan sesuatu (DELETE). Jika dapur kehabisan sesuatu, pelayan memberi tahu Anda (404 Not Found) sehingga Anda tidak menunggu selamanya."
Analogi ini terbukti cukup efektif dalam rapat dengan pemangku kepentingan.
53. Jelaskan saat Anda mengoptimalkan sebuah API
Gunakan metode STAR:
54. Bagaimana Anda mengomunikasikan breaking changes kepada konsumen API?
Umumkan lebih awal: Beri pemberitahuan setidaknya 6-12 bulan untuk perubahan besar
Gunakan header Sunset:
Sunset: Sat, 31 Dec 2026 23:59:59 GMTSediakan panduan migrasi: Dokumentasikan dengan jelas apa yang berubah dan cara beradaptasi
Jalankan kedua versi: Pertahankan versi lama tetap berjalan selama transisi
Pantau penggunaan: Lacak klien mana yang masih menggunakan versi lama
55. Dokumentasi apa yang Anda buat untuk API?
Dokumentasi esensial mencakup:
56. Kapan Anda TIDAK menggunakan REST?
REST tidak selalu pilihan yang tepat. Mengetahui kapan menggunakan alternatif menunjukkan kedewasaan arsitektural. Saya melihat tim memaksakan REST pada use case yang justru menimbulkan lebih banyak masalah daripada manfaat.
Skenario
Alternatif yang Lebih Baik
Chat atau gim real-time
WebSocket
Layanan internal berperforma tinggi
gRPC
Kueri data bertingkat kompleks
GraphQL
Arsitektur berbasis event
Message broker (Kafka, RabbitMQ)
Streaming dua arah
gRPC bidirectional atau WebSocket
Referensi Cepat REST API
Gunakan bagian ini sebagai rujukan cepat saat Anda perlu memverifikasi properti metode HTTP, kode status, atau pola umum saat persiapan wawancara atau pengembangan nyata.
Perbandingan Metode HTTP
Tabel ini merangkum properti kunci setiap metode HTTP, membantu Anda memilih yang tepat untuk kasus penggunaan Anda.
Metode
Aman
Idempoten
Dapat di-cache
Penggunaan Umum
GET
Ya
Ya
Ya
Mengambil resource
POST
Tidak
Tidak
Kondisional
Membuat resource
PUT
Tidak
Ya
Tidak
Mengganti resource
PATCH
Tidak
Tidak
Kondisional
Pembaruan parsial
DELETE
Tidak
Ya
Tidak
Menghapus resource
HEAD
Ya
Ya
Ya
Hanya mengambil header
OPTIONS
Ya
Ya
Tidak
Preflight CORS
Referensi Kode Status
Berikut kode status HTTP yang paling umum digunakan, diorganisasi berdasarkan kategori. Fokuslah memahami kapan menggunakannya daripada menghafal seluruh spesifikasi.
2xx Sukses
4xx Kesalahan Klien
5xx Kesalahan Server
Kesalahan Umum yang Perlu Dihindari
Bahkan pengembang berpengalaman pun bisa terjebak. Waspadai jebakan umum berikut saat merancang atau mengimplementasikan REST API:
Menggunakan kata kerja dalam URL (mis.,
/getUsersalih-alih/users)Mengembalikan 200 OK untuk kondisi error, yang merusak penanganan error di sisi klien
Membingungkan 401 dan 403 (Autentikasi vs. Otorisasi)
Menumpuk URL terlalu dalam lebih dari dua level
Menyimpan token di localStorage (menimbulkan kerentanan XSS)
Mengabaikan idempotensi untuk permintaan POST
Mengembalikan pesan error generik tanpa detail yang dapat ditindaklanjuti
Kesimpulan
Saya menyadari bahwa menghafal definisi tidak akan menjamin Anda lulus setiap wawancara teknis. Kenyataannya adalah rekayasa di dunia nyata sering kali membutuhkan pelanggaran terhadap "aturan" ketat yang baru saja kita bahas, dan pewawancara lebih peduli pada penalaran Anda daripada kemampuan Anda mengutip spesifikasi RFC. Untuk peran yang sangat khusus, pengetahuan domain mendalam atau keahlian kerangka kerja tertentu mungkin tetap menjadi faktor penentu.
Namun menguasai dasar-dasar REST tetap penting meskipun Anda tidak menemui pertanyaan-pertanyaan yang persis sama. Ini menjadi cetak biru untuk memahami cara kerja web modern. Ketika Anda diminta merancang sistem baru atau men-debug gangguan produksi, memahami perbedaan antara 401 dan 403 (seperti yang saya jelaskan sebelumnya) memberi Anda kejelasan untuk memecahkan masalah lebih cepat. Anda akan menyadari mengapa standarisasi interaksi API Anda, bukan sekadar menulis kode yang berfungsi, adalah ciri khas engineer senior.
Jika Anda ingin menyelami lebih dalam pembangunan sistem-sistem ini, lihat Introduction to APIs in Python kami.