REST API'ler, internet üzerindeki entegrasyonların çoğunu güçlendirir. Back-end, full stack ya da yazılım mühendisliği pozisyonlarına başvururken, muhtemelen REST API tasarımı, HTTP yöntemleri ve kimlik doğrulama desenleri hakkında sorularla karşılaşacaksınız.
Bu rehberde, mülakatçilerin gerçekten sorduğu sorular üzerinden gideceğim. Hedef pozisyonunuza en uygun konulara odaklanabilmeniz için soruları zorluk seviyesine ve role göre düzenledim. Her yanıtta pratik örnekler ve ilgili yerlerde uyarlayabileceğiniz kod parçacıkları var.
Aklınızda tutmanız gereken bir nokta: mülakatçılar, ileri düzey konulardan çok temelleri test eder. Temelleri (HTTP yöntemleri, durum kodları, durum bilgisiz yapı) sağlam kavrarsanız, çoğu REST API mülakatını özgüvenle yönetirsiniz. Gösterişli mimari kalıplar daha sonra gelir.
Temel REST API Mülakat Soruları
Bu sorular temel bilginizi ölçer. Kıdem seviyesinden bağımsız olarak neredeyse her mülakatta karşınıza çıkar.
1. REST nedir ve kısıtları nelerdir?
REST, Temsili Durum Transferi (Representational State Transfer) anlamına gelir. Roy Fielding'in 2000 tarihli doktora tezinde tanımlanan, ağ tabanlı uygulamalar için bir mimari stildir.
REST'in altı kısıtı vardır:
İstemci-Sunucu: Kullanıcı arayüzü ile veri depolamanın ayrılması
Durum Bilgisiz: Her istek, tamamlanması için gereken tüm bilgileri içerir
Tekdüze Arayüz: Kaynaklarla etkileşimin standartlaştırılmış yolu
Talep Üzerine Kod (opsiyonel): Sunucular, istemcilere çalıştırılabilir kod gönderebilir
2. REST ve SOAP arasındaki fark nedir?
REST bir mimari stildir; SOAP ise bir protokoldür. REST genellikle HTTP üzerinde JSON kullanır ve standart HTTP yöntemlerinden yararlanır. SOAP yalnızca XML kullanır ve zarf ve başlıklarla kendi mesajlaşma formatını tanımlar.
Boyut
REST
SOAP
Format
JSON, XML, diğerleri
Yalnızca XML
Taşıma
HTTP
HTTP, SMTP, diğerleri
Önbellekleme
Yerleşik HTTP önbelleği
Önbelleğe alınamaz
Performans
Hafif
Daha yüksek ek yük
SOAP, resmi sözleşmeler (WSDL) veya mesaj düzeyi güvenlik (WS-Security) gerektiren kurumsal sistemler için hâlâ mantıklıdır.
3. HTTP yöntemleri nelerdir ve her birini ne zaman kullanırsınız?
HTTP yöntemleri, bir kaynak üzerinde gerçekleştirilecek işlemi tanımlar.
Yöntem
Amaç
Örnek
GET
Bir kaynağı getirir
GET /users/123
POST
Yeni bir kaynak oluşturur
POST /users
PUT
Bir kaynağı bütünüyle değiştirir
PUT /users/123
PATCH
Bir kaynağı kısmen günceller
PATCH /users/123
DELETE
Bir kaynağı siler
DELETE /users/123
4. PUT ve POST arasındaki fark nedir?
POST, URI'yi sunucunun belirlediği yeni bir kaynak oluşturur. PUT, istemcinin belirttiği belirli bir URI'deki kaynağı değiştirir.
POST /users → Server creates user, returns /users/123
PUT /users/123 → Client specifies URI, replaces entire resourceAltyapı:
Var olmayan bir URI'ye PUT yaparsanız, sunucu onu oluşturabilir. Mevcut bir URI'ye PUT yaparsanız, tüm kaynağı değiştirirsiniz.
5. PUT ve PATCH arasındaki fark nedir?
PUT tüm kaynağı değiştirir. PATCH kısmi değişiklikler uygular.
# PUT replaces everything
PUT /users/123{"name":"Khalid","email":"[email protected]","role":"admin"}# PATCH updates only specified fields
PATCH /users/123{"role":"admin"}Altyapı:
6. REST'te "durum bilgisiz" ne anlama gelir?
Durum bilgisiz, her isteğin sunucunun işlemesi için gereken tüm bilgileri içermesi gerektiği anlamına gelir. Sunucu, istekler arasında herhangi bir istemci bağlamı saklamaz.
Bu, sunucu tarafı oturumların olmadığı anlamına gelir. Bir kullanıcı kimliği doğrulanmışsa, istemci her istekte kimlik bilgilerini (genellikle bir belirteç) göndermelidir.
7. Bir API'yi RESTful yapan nedir?
Bir API, HATEOAS (Application State'in Motoru Olarak Hipermedya) dahil tüm REST kısıtlarını sağladığında gerçekten RESTful sayılır. Pratikte, kendine "REST" diyen çoğu API aslında "REST-benzeri" ya da Richardson Olgunluk Modeli Seviye 2'dedir. Dürüst olmak gerekirse, çoğu kullanım senaryosu için bu yeterlidir.
REST API'leri için Richardson Olgunluk Modeli seviyeleri. Görsel: Yazar.
8. Bilmeniz gereken temel HTTP durum kodları nelerdir?
API senaryolarının çoğunu kapsayan en az şu yedi temel durum koduna aşina olmalısınız:
Kod
Ad
Ne Zaman Kullanılır
200
OK
Başarılı GET, PUT, PATCH
201
Created
Başarılı POST (Location başlığını ekleyin)
204
No Content
Başarılı DELETE
400
Bad Request
Bozuk sözdizimi
404
Not Found
Kaynak mevcut değil
500
Internal Server Error
Sunucu tarafı hata
9. Kaynak ile uç nokta arasındaki fark nedir?
Bir kaynak, veri varlığıdır (kullanıcı, sipariş, ürün). Bir uç nokta, o kaynağa erişim sağlayan URL yoludur.
Resource: User
Endpoints: GET /users, GET /users/123, POST /usersAltyapı:
10. URI tasarımı için en iyi uygulamalar nelerdir?
Fiiller değil, isimler kullanın. URI'leri küçük harfle ve birden çok kelimede kısa çizgiyle yazın. Koleksiyonlar için çoğul isimler kullanın.
Derin iç içe yapıları kaçının. /users/123/posts/456/comments/789 yerine /comments/789 veya /comments?post_id=456 düşünün.
11. İdempotentlik nedir ve hangi HTTP yöntemleri idempotenttir?
Bir işlem, birden fazla kez yapılması tek sefer yapılmasıyla aynı sonucu üretiyorsa idempotenttir.
Yöntem
İdempotent
Neden
GET
Evet
Okuma durum değiştirmez
PUT
Evet
Aynı veriyle değiştirmek aynı sonucu verir
DELETE
Evet
İki kez silmek kaynağı silinmiş halde bırakır
POST
Hayır
İki kez oluşturmak iki kaynak üretir
PATCH
Hayır*
İşleme bağlıdır
Bir değeri ayarlayan PATCH idempotenttir; bir sayacı artıran PATCH değildir.
12. Güvenli ve idempotent yöntemler arasındaki fark nedir?
Güvenli yöntemler kaynakları değiştirmez (GET, HEAD, OPTIONS). İdempotent yöntemler birden fazla kez çağrılsa da aynı etkiyi yaratır (GET, PUT, DELETE).
Tüm güvenli yöntemler idempotenttir, ancak tüm idempotent yöntemler güvenli değildir. DELETE idempotenttir fakat güvenli değildir çünkü durumu değiştirir.
13. Sorgu parametrelerini ne zaman, yol parametrelerini ne zaman kullanmalısınız?
Yol parametreleri belirli bir kaynağı tanımlar. Sorgu parametreleri koleksiyonları filtreler, sıralar veya sayfalar.
İçerik müzakeresi, istemcilerin bir kaynağın farklı temsillerini talep etmesine olanak tanır. İstemci bir Accept başlığı gönderir ve sunucu uygun formatla yanıt verir.
Accept: application/json → Server returns JSON
Accept: application/xml → Server returns XMLAltyapı:
15. OPTIONS yönteminin amacı nedir?
OPTIONS, bir sunucunun belirli bir URL için desteklediği HTTP yöntemlerini döndürür. Tarayıcılar, çapraz kaynak isteklerine izin verilip verilmediğini kontrol etmek için CORS preflight isteklerinde kullanır.
Orta Düzey REST API Mülakat Soruları
Bu sorular, pratik uygulama ve karar alma yeteneğinizi ölçer. Orta düzey pozisyonlarda bekleyin.
16. 401 ile 403 arasındaki fark nedir?
Bu, en sık karıştırılan durum kodu ikilisidir. Kıdemli mühendislerin bile kod incelemelerinde bunları karıştırdığını gördüm.
Yetkisiz demektir. Sunucu kimsiniz biliyor ancak izniniz yok. Yeniden kimlik doğrulamak işe yaramaz.
Kimlik doğrulama ve yetkilendirme hata karar akış şeması. Görsel: Yazar.
17. 400 ile 422 arasındaki fark nedir?
Farkı açıklayan örnekler şunlardır:
400 Bad Request
Bozuk sözdizimini belirtir. Sunucu isteği ayrıştıramaz (geçersiz JSON yapısı, eksik zorunlu başlıklar).
422 Unprocessable Entity
Geçerli sözdizimi ancak anlamsal hatalar olduğunu belirtir. JSON geçerlidir ama veriler doğrulamadan geçmez (geçersiz e-posta formatı, çok kısa parola).
ETag, bir kaynak için sürüm tanımlayıcıdır. Sunucu bunu yanıtlarda gönderir; istemci, kaynağın değişip değişmediğini kontrol etmek için sonraki isteklerde geri gönderir.
# First request
GET /users/123
Response: ETag: "abc123"
# Subsequent request
GET /users/123
If-None-Match: "abc123"
Response: 304 Not Modified (if unchanged)Altyapı:
22. REST API'leri için hangi kimlik doğrulama yöntemleri kullanılır?
En yaygın dört yöntem API Keys, Bearer Tokens, OAuth 2.0 ve JWT'dir:
Yöntem
Kullanım Durumu
Artılar
Eksiler
API Keys
Sunucudan sunucuya
Basit
Süresi yok, sızması kolay
Bearer Tokens
Oturum kimlik doğrulaması
Durum bilgisiz
Güvenli saklama şart
OAuth 2.0
Üçüncü taraf erişimi
Delege kimlik doğrulama
Karmaşık uygulama
JWT
Durum bilgisiz kimlik doğrulama
Kendi kendine yeter
Kara liste olmadan iptal edilemez
23. JWT nedir ve nasıl çalışır?
JWT (JSON Web Token) üç parçadan oluşur: Header, Payload ve Signature. Python'da JSON ile çalışma hakkında daha fazla bilgi edinin.
Pratikte, çoğu API HATEOAS'ı tam olarak uygulamaz. Kavramı bilin, ancak çoğu işte tam uyum beklemeyin. Büyük teknoloji şirketleri bile nadiren tamamen HATEOAS uyumlu API'ler oluşturur.
26. Hataları tutarlı bir şekilde nasıl ele alırsınız?
Tutarlı hata yanıtları için RFC 7807 Problem Details formatını kullanın:
{"type":"https://api.example.com/errors/validation","title":"Validation Error","status":422,"detail":"Email format is invalid","instance":"/users"}Altyapı:
27. Oran sınırlama (rate limiting) nedir ve neden önemlidir?
Oran sınırlama, API'nizi kötüye kullanıma karşı korur ve adil kullanımı sağlar. Yaygın bir yanıt:
HTTP/1.1 429 Too Many Requests
Retry-After: 3600
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 0Altyapı:
28. Filtreleme ve sıralamayı nasıl tasarlarsınız?
Açık kurallarla sorgu parametreleri kullanın:
# Filtering
GET /products?category=electronics&price[gte]=100&price[lte]=500
# Sorting (prefix - for descending)
GET /users?sort=-created_at,nameAltyapı:
İleri Düzey REST API Mülakat Soruları
Bu sorular mimari düşünmeyi ölçer. Kıdemli pozisyonlar için bekleyin.
29. OAuth 2.0 ile OAuth 2.1 arasında neler değişti?
OAuth 2.1, güvenlik en iyi uygulamalarını birleştirir:
Özellik
OAuth 2.0
OAuth 2.1
PKCE
Opsiyonel
TÜM istemciler için zorunlu
Implicit Grant
Desteklenir
Kaldırıldı
Password Grant
Desteklenir
Kaldırıldı
Redirect URI
Esnek eşleştirme
Birebir eşleşme zorunlu
Temel mesaj: Tüm istemci türleri için PKCE ile Yetkilendirme Kodu akışını kullanın.
30. Ödeme uç noktaları için idempotentliği nasıl uygularsınız?
POST isteklerini yeniden denemelere karşı güvenli kılmak için idempotency key'leri kullanın:
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 resultAltyapı:
İstemci bir UUID üretir ve istekle birlikte gönderir. Aynı anahtar tekrar gelirse, önbellekteki yanıtı döndürün.
31. Dağıtık bir oran sınırlayıcıyı nasıl tasarlarsınız?
Dağıtık sistemlerde, trafik örneklerde dengelendiği için bellek içi sayaçları kullanamazsınız. Bu, adayların sıklıkla takıldığı yaygın bir noktadır.
Mimari:
Merkezi sayaç depolaması için Redis kullanın
Patlamalara tolerans için Token Bucket algoritmasını uygulayın
Yarış koşullarını önlemek için atomik işlemler (Lua betikleri) kullanın
# Pseudocode for Token Bucket
tokens = redis.get(user_id)or max_tokens
if tokens >0:
redis.decr(user_id)
process_request()else:return429Altyapı:
32. gRPC'yi REST yerine ne zaman seçersiniz?
gRPC ile REST arasındaki seçim, spesifik gereksinimlerinize bağlıdır.
gRPC'yi şunlar için seçin:
Dahili mikro servis iletişimi (5-10x aktarım iyileşmesi)
Gerçek zamanlı akış gereksinimleri
Bant genişliği kısıtlı mobil-arka uç iletişimi
Sıkı sözleşmeler gerektiren çok dilli ortamlar
REST'i şunlar için seçin:
Farklı tüketicileri olan herkese açık API'ler
Web uygulamaları (evrensel tarayıcı desteği)
Basit CRUD işlemleri
Protocol Buffers'a aşina olmayan ekipler
33. Uzun süreli işlemleri nasıl ele alırsınız?
Asenkron istek desenini kullanın:
İstemci isteği gönderir
Sunucu bir durum URL'siyle 202 Accepted döndürür
İstemci tamamlanana kadar durum URL'sini yoklar
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"}Altyapı:
34. Saga deseni nedir?
Saga, mikro servisler arasında kilitleme olmadan dağıtık işlemleri yönetir. Her servis yerel bir işlem yürütür ve bir olay yayınlar. Bir adım başarısız olursa, telafi işlemleri önceki adımları geri alır.
Order Created → Payment Processed → Inventory Reserved → Order Confirmed
↓ (failure)
Release Payment → Cancel OrderAltyapı:
35. Yaygın JWT güvenlik açıkları nelerdir?
Algoritma karışıklığı: Saldırgan RS256'yı HS256'ya çevirir ve açık anahtarla imzalar. Çözüm: algoritmaları her zaman beyaz listeye alın.
"none" algoritması: Saldırgan imzayı tamamen kaldırır. Çözüm: "none" algoritmasını reddedin.
Back-end Geliştirici REST API Soruları
Bu sorular, sunucu tarafı uygulama ayrıntıları, veritabanı optimizasyonu ve back-end mühendislerinin günlük karşılaştığı performans kalıplarına odaklanır.
36. N+1 sorgu problemi nedir?
N+1 problemi, N kayıt getirdikten sonra her kaydın ilişkisi için ayrı bir sorgu çalıştırdığınızda ortaya çıkar.
# N+1 Problem: 101 queries for 100 users
users = User.query.all()# 1 queryfor user in users:print(user.posts)# 100 queriesAltyapı:
Çözümler:
Django: Yabancı anahtarlar için select_related(), çok-çok için prefetch_related() kullanın.
# 2 queries instead of 101
users = User.objects.prefetch_related('posts').all()Altyapı:
SQLAlchemy: joinedload() veya selectinload() kullanın.
37. Bağlantı havuzlamasını nasıl yapılandırırsınız?
Bağlantı havuzlama, her istek için yeni bağlantı oluşturmak yerine veritabanı bağlantılarını yeniden kullanır.
API'nizin sağlığını değerlendirmek için şu dört temel metriği izlemelisiniz:
Metrik
Açıklama
Alarm Eşiği
P50 Gecikme
Medyan yanıt süresi
Baz değer
P99 Gecikme
En yavaş %1
> 2s, 5 dk boyunca
Hata Oranı
% olarak 4xx/5xx
> %1, 5 dk boyunca
Throughput
Saniyedeki istek sayısı
Kapasite planlama
Full Stack Geliştirici REST API Soruları
Bu sorular, tarayıcı güvenliği, durum yönetimi ve çapraz kaynak iletişim başta olmak üzere hem istemci hem sunucu kaygılarını anlama düzeyinizi ölçer.
41. Tarayıcı ne zaman CORS preflight isteği gönderir?
Tarayıcılar şu durumlarda OPTIONS preflight gönderir:
GET, HEAD, POST dışındaki yöntemler
Özel başlıklar (Authorization, X-API-Key)
form-urlencoded, multipart/form-data, text/plain dışındaki Content-Type
42. CORS'u güvenli şekilde nasıl yapılandırırsınız?
Güvenli CORS yapılandırması, kökenleri açıkça beyaz listelemeyi ve kimlik bilgilerini dikkatle ele almayı gerektirir. İşte güvenli bir Express.js kurulumu:
// Express.js
app.use(cors({origin:['https://yourdomain.com'],// Never use * with credentialscredentials:true,methods:['GET','POST','PUT','DELETE'],allowedHeaders:['Content-Type','Authorization']}));Altyapı:
Kimlik bilgileriyle birlikte joker (*) asla kullanmayın. null origin'e asla izin vermeyin.
43. İstemci tarafında belirteçleri nerede saklamalısınız?
Belirteç saklama, XSS ve CSRF zafiyetleri arasında güvenlik ödünleşimleri içerir"
Saklama
XSS Riski
CSRFRiski
Öneri
localStorage
Yüksek
Yok
Belirteçler için kaçının
HttpOnly Cookie
Düşük
Önlem gerektirir
Önerilir
Bellek içi
Düşük
Düşük
Erişim belirteçleri için en iyisi
En iyi uygulama: Yenileme belirteçlerini HttpOnly çerezlerde SameSite=Strict ile saklayın. Erişim belirteçlerini bellekte tutun.
44. WebSocket yerine SSE'yi ne zaman kullanmalısınız?
Seçim, çift yönlü iletişime ihtiyaç duyup duymadığınıza ve yeniden bağlanmayı nasıl ele almak istediğinize bağlıdır:
Özellik
WebSockets
SSE
Yön
Çift yönlü
Sunucudan istemciye
Yeniden bağlanma
Manuel
Otomatik
İkili veri
Evet
Hayır
Bildirimler, canlı akışlar, hisse senedi verileri için SSE kullanın. Sohbet, çok oyunculu oyunlar, ortak düzenleme için WebSocket kullanın.
45. Dosya yüklemelerini nasıl ele alırsınız?
Büyük dosyalar için ilerleme takibiyle parçalı yüklemeler kullanın:
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);}}Altyapı:
Senaryo Bazlı REST API Soruları
Bu sorular, REST ilkelerini gerçek dünya problemlerine uygulayabilme yeteneğinizi değerlendirir. Mülakatçılar, tasarım sürecinizi ve mimari ödünleşimleri nasıl yaptığınızı görmek ister.
46. Bir otel rezervasyon sistemi için REST API tasarlayın
Bir otel rezervasyon sistemi, arama, uygunluk kontrolü ve rezervasyonları çifte rezervasyonları engelleyerek yönetebilmelidir. Çekirdek kaynaklar şunlardır:
Kaynaklar:
/hotels - Otelleri listele ve ara
/hotels/{id}/rooms - Uygun odalar
/bookings - Rezervasyon oluştur ve yönet
/guests/{id} - Misafir profilleri
Kilit kararlar:
Otel araması için imleç tabanlı sayfalama kullanın
Bu sorular, iletişim becerilerinizi ve gerçek dünya API zorluklarını nasıl ele aldığınızı değerlendirir. Sorun çözme sürecinizi ve paydaşlarla nasıl çalıştığınızı göstermeye odaklanın.
52. REST'i teknik olmayan bir kişiye açıklayın
"Bir REST API'yi, restorandaki bir garson gibi düşünün. Siz (müşteri) mutfağa doğrudan gidemezsiniz. Bunun yerine garsona menüden ne istediğinizi söylersiniz ve o da getirir. Menü, neleri sipariş edebileceğinizi listeleyen API dokümantasyonuna benzer. Garson belirli kuralları izler: bir şeyi istersiniz (GET), yeni bir şey sipariş edersiniz (POST) veya bir şeyi geri gönderirsiniz (DELETE). Mutfakta bir şey kalmadıysa, garson size söyler (404 Not Found) ki sonsuza kadar beklemeyesiniz."
Bu benzetme, paydaş toplantılarında şaşırtıcı derecede iyi çalışır.
53. Bir API'yi optimize ettiğiniz bir zamanı anlatın
STAR yöntemini kullanın:
Durum: "Arama API'mız yoğun trafikte 3 saniyelik yanıt sürelerine sahipti"
Görev: "Büyük mimari değişiklikler yapmadan gecikmeyi azaltmam gerekiyordu"
Aksiyon: "Sık sorgular için Redis önbelleği ekledim, imleç tabanlı sayfalamayı uyguladım ve veritabanı indeksleri ekledim"
Sonuç: "Yanıt süresi 200 ms'ye düştü ve 5 kat daha fazla trafiği karşıladık"
54. API tüketicilerine kırıcı değişiklikleri nasıl iletirsiniz?
Erken duyurun: Büyük değişiklikler için en az 6-12 ay önceden bildirin
Sunset başlığı kullanın: Sunset: Sat, 31 Dec 2026 23:59:59 GMT
Geçiş kılavuzları sağlayın: Tam olarak neyin değiştiğini ve nasıl uyarlanacağını belgeleyin
Her iki sürümü de çalıştırın: Geçiş sırasında eski sürümü açık tutun
Kullanımı izleyin: Hangi istemcilerin hâlâ eski sürümde olduğunu takip edin
55. API'ler için hangi dokümantasyonları oluşturursunuz?
Gerekli dokümantasyon şunları içerir:
OpenAPI/Swagger şeması: Makinece okunabilir sözleşme
Hızlı başlangıç kılavuzu: 5 dakikanın altında ilk API çağrısı
Kimlik doğrulama kılavuzu: Kimlik bilgilerinin nasıl alınacağı ve kullanılacağı
Hata referansı: Tüm olası hata kodları ve nasıl ele alınacakları
Değişiklik günlüğü: Her sürümde nelerin değiştiği
Oran sınırı dokümantasyonu: Katman başına limitler ve 429'ların nasıl ele alınacağı
56. REST'i ne zaman KULLANMAZSINIZ?
REST her zaman doğru seçim değildir. alternatifleri ne zaman kullanacağınızı bilmek mimari olgunluğu gösterir. Ekiplerin, REST'in sorun çözdüğünden çok daha fazla sorun yarattığı kullanım durumlarına zorlandığını gördüm.
HTTP yöntem özelliklerini, durum kodlarını veya yaygın kalıpları doğrulamanız gerektiğinde bu bölümü hızlı başvuru olarak kullanın; ister mülakat hazırlığında ister gerçek geliştirmede.
HTTP Yöntemleri Karşılaştırması
Bu tablo, her HTTP yönteminin kilit özelliklerini özetler ve kullanıcı durumunuza uygun olanı seçmenize yardımcı olur.
Yöntem
Güvenli
İdempotent
Önbelleğe Alınabilir
Tipik Kullanım
GET
Evet
Evet
Evet
Kaynak getir
POST
Hayır
Hayır
Koşullu
Kaynak oluştur
PUT
Hayır
Evet
Hayır
Kaynağı değiştir
PATCH
Hayır
Hayır
Koşullu
Kısmi güncelle
DELETE
Hayır
Evet
Hayır
Kaynağı kaldır
HEAD
Evet
Evet
Evet
Yalnızca başlıkları al
OPTIONS
Evet
Evet
Hayır
CORS preflight
Durum Kodları Referansı
En yaygın kullanılan HTTP durum kodları burada kategoriye göre düzenlenmiştir. Tüm spesifikasyonu ezberlemekten ziyade her birinin ne zaman kullanılacağını anlamaya odaklanın.
2xx Başarı
200 OK: Başarılı GET, PUT, PATCH
201 Created: Başarılı POST (Location başlığını ekleyin)
204 No Content: Başarılı DELETE
4xx İstemci Hataları
400 Bad Request: Bozuk sözdizimi
401 Unauthorized: Kimlik doğrulama gerekli
403 Forbidden: Kimliği doğrulanmış ancak yetkili değil
404 Not Found: Kaynak mevcut değil
409 Conflict: Durum çakışması
422 Unprocessable Entity: Doğrulama hatası
429 Too Many Requests: Oran sınırı aşıldı
5xx Sunucu Hataları
500 Internal Server Error: Genel sunucu hatası
502 Bad Gateway: Yukarı akış sunucu hatası
503 Service Unavailable: Geçici olarak aşırı yük
Kaçınılması Gereken Yaygın Hatalar
Deneyimli geliştiriciler bile bu tuzaklara düşer. REST API tasarlarken veya uygularken şu yaygın hatalara dikkat edin:
URL'lerde fiil kullanmak (ör. /getUsers yerine /users)
Hata durumları için 200 OK döndürmek; bu, istemci tarafı hata yönetimini bozar
401 ile 403'ü karıştırmak (Kimlik Doğrulama vs. Yetkilendirme)
URL'leri iki seviyeden fazla iç içe yapmak
Belirteçleri localStorage'da saklamak (XSS açıkları yaratır)
POST isteklerinde idempotentliği göz ardı etmek
Eyleme geçirilebilir ayrıntılar içermeyen genel hata mesajları döndürmek
Sonuç
Tanımları ezberlemenin her teknik mülakattan geçmenizi garanti etmeyeceğinin farkındayım. Gerçek şu ki, gerçek dünya mühendisliği sıklıkla az önce bahsettiğimiz "katı" kuralları esnetmeyi gerektirir ve mülakatçılar, RFC spesifikasyonlarını ezbere okumaktan ziyade muhakemenize önem verir. Çok uzmanlaşmış roller için, derin alan bilgisi veya belirli bir çerçevede uzmanlık yine belirleyici olabilir.
Ancak bu REST temellerine hâkim olmak, bu sorularla birebir karşılaşmasanız bile önemlidir. Bu, modern webin nasıl çalıştığını anlamak için bir plan görevi görür. Yeni bir sistem tasarlamanız ya da üretimde bir kesintiyi hata ayıklamanız istendiğinde, (daha önce açıkladığım gibi) 401 ile 403 arasındaki farkı anlamak, sorunları daha hızlı çözmenizi sağlar. Yalnızca çalışan kod yazmak değil, API etkileşimlerinizi standartlaştırmanın da kıdemli bir mühendisin alametifarikası olduğunu net biçimde görürsünüz.
Bu sistemleri derinlemesine inşa etmeye dalmak isterseniz, Python ile API'lere Giriş kursumuza göz atın.
Veri hatları, bulut ve YZ araçları üzerinde çalışan; aynı zamanda DataCamp ve gelişmekte olan geliştiriciler için pratik, yüksek etkili eğiticiler yazan bir veri mühendisi ve topluluk inşacısıyım.
SSS
HTTP yöntemleri için RFC spesifikasyonlarını ezberlemeli miyim?⌄
Kesinlikle hayır. Mülakatçılar, dokümantasyonu ezberlemenizi değil, pratik sonuçlarını anladığınızı görmek ister. Bir ağ isteği başarısız olduğunda ve yeniden denemek gerektiğinde idempotentliğin neden önemli olduğuna odaklanın. İşte bu, junior ile senior bakışını ayırır.
2026'da SOAP veya XML-RPC sorulursa ne yaparım?⌄
2026'da bile düşündüğünüzden daha sık olur; özellikle bankalar, sağlık sektörü veya kamu yüklenicileri için olan rollerde. Önemli olan, bu eski protokollerin neden hâlâ var olduğunu (katı sözleşmeler, mesaj düzeyi güvenlik) açıklamak; onları demode diye küçümsemek değil. Eğilimleri değil, ödünleşimleri anladığınızı gösterin.
Gerçek bir proje olmadan API tasarımını nasıl pratik ederim?⌄
Her gün kullandığınız bir hizmeti seçin (Spotify, Twitter, spor salonunuzun rezervasyon sistemi) ve API'sini nasıl tasarlayacağınızı taslaklayın. Hangi uç noktaları oluştururdunuz? 10.000 şarkılık bir kullanıcının çalma listesinde sayfalamayı nasıl ele alırdınız? Bu egzersiz, bilgi boşluklarınızı hızla ortaya çıkarır.
Mülakatlarda gerçekten OAuth 2.1 mi soruluyor, yoksa OAuth 2.0 hâlâ baskın mı?⌄
Çoğu şirket hâlâ OAuth 2.0 kullanıyor, ancak 2.1'in tüm istemciler için PKCE'yi zorunlu kıldığını bilmek, güvenlik en iyi uygulamalarını takip ettiğinizi gösterir. Bunu, herkesin zaten orada olduğunu varsaymak yerine "sektörün gittiği yön" olarak dile getirin.
Adayların en çok tökezlediği tek şey nedir?⌄
Sistem tasarımında açıklayıcı sorular sormamak. "Bir API tasarlayın" denince, adaylar ölçek, tutarlılık gereksinimleri veya bunun dahili mi herkese açık mı olduğunu sormadan doğrudan uç noktalara atlıyor. En iyi yanıtlar çözümlerle değil, sorularla başlar.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
REST API'ler, internet üzerindeki entegrasyonların çoğunu güçlendirir. Back-end, full stack ya da yazılım mühendisliği pozisyonlarına başvururken, muhtemelen REST API tasarımı, HTTP yöntemleri ve kimlik doğrulama desenleri hakkında sorularla karşılaşacaksınız.
Bu rehberde, mülakatçilerin gerçekten sorduğu sorular üzerinden gideceğim. Hedef pozisyonunuza en uygun konulara odaklanabilmeniz için soruları zorluk seviyesine ve role göre düzenledim. Her yanıtta pratik örnekler ve ilgili yerlerde uyarlayabileceğiniz kod parçacıkları var.
Aklınızda tutmanız gereken bir nokta: mülakatçılar, ileri düzey konulardan çok temelleri test eder. Temelleri (HTTP yöntemleri, durum kodları, durum bilgisiz yapı) sağlam kavrarsanız, çoğu REST API mülakatını özgüvenle yönetirsiniz. Gösterişli mimari kalıplar daha sonra gelir.
Temel REST API Mülakat Soruları
Bu sorular temel bilginizi ölçer. Kıdem seviyesinden bağımsız olarak neredeyse her mülakatta karşınıza çıkar.
1. REST nedir ve kısıtları nelerdir?
REST, Temsili Durum Transferi (Representational State Transfer) anlamına gelir. Roy Fielding'in 2000 tarihli doktora tezinde tanımlanan, ağ tabanlı uygulamalar için bir mimari stildir.
REST'in altı kısıtı vardır:
2. REST ve SOAP arasındaki fark nedir?
REST bir mimari stildir; SOAP ise bir protokoldür. REST genellikle HTTP üzerinde JSON kullanır ve standart HTTP yöntemlerinden yararlanır. SOAP yalnızca XML kullanır ve zarf ve başlıklarla kendi mesajlaşma formatını tanımlar.
Boyut
REST
SOAP
Format
JSON, XML, diğerleri
Yalnızca XML
Taşıma
HTTP
HTTP, SMTP, diğerleri
Önbellekleme
Yerleşik HTTP önbelleği
Önbelleğe alınamaz
Performans
Hafif
Daha yüksek ek yük
SOAP, resmi sözleşmeler (WSDL) veya mesaj düzeyi güvenlik (WS-Security) gerektiren kurumsal sistemler için hâlâ mantıklıdır.
3. HTTP yöntemleri nelerdir ve her birini ne zaman kullanırsınız?
HTTP yöntemleri, bir kaynak üzerinde gerçekleştirilecek işlemi tanımlar.
Yöntem
Amaç
Örnek
GETBir kaynağı getirir
GET /users/123POSTYeni bir kaynak oluşturur
POST /usersPUTBir kaynağı bütünüyle değiştirir
PUT /users/123PATCHBir kaynağı kısmen günceller
PATCH /users/123DELETEBir kaynağı siler
DELETE /users/1234. PUT ve POST arasındaki fark nedir?
POST, URI'yi sunucunun belirlediği yeni bir kaynak oluşturur. PUT, istemcinin belirttiği belirli bir URI'deki kaynağı değiştirir.
Var olmayan bir URI'ye PUT yaparsanız, sunucu onu oluşturabilir. Mevcut bir URI'ye PUT yaparsanız, tüm kaynağı değiştirirsiniz.
5. PUT ve PATCH arasındaki fark nedir?
PUT tüm kaynağı değiştirir. PATCH kısmi değişiklikler uygular.
6. REST'te "durum bilgisiz" ne anlama gelir?
Durum bilgisiz, her isteğin sunucunun işlemesi için gereken tüm bilgileri içermesi gerektiği anlamına gelir. Sunucu, istekler arasında herhangi bir istemci bağlamı saklamaz.
Bu, sunucu tarafı oturumların olmadığı anlamına gelir. Bir kullanıcı kimliği doğrulanmışsa, istemci her istekte kimlik bilgilerini (genellikle bir belirteç) göndermelidir.
7. Bir API'yi RESTful yapan nedir?
Bir API, HATEOAS (Application State'in Motoru Olarak Hipermedya) dahil tüm REST kısıtlarını sağladığında gerçekten RESTful sayılır. Pratikte, kendine "REST" diyen çoğu API aslında "REST-benzeri" ya da Richardson Olgunluk Modeli Seviye 2'dedir. Dürüst olmak gerekirse, çoğu kullanım senaryosu için bu yeterlidir.
REST API'leri için Richardson Olgunluk Modeli seviyeleri. Görsel: Yazar.
8. Bilmeniz gereken temel HTTP durum kodları nelerdir?
API senaryolarının çoğunu kapsayan en az şu yedi temel durum koduna aşina olmalısınız:
Kod
Ad
Ne Zaman Kullanılır
200
OK
Başarılı GET, PUT, PATCH
201
Created
Başarılı POST (Location başlığını ekleyin)
204
No Content
Başarılı DELETE
400
Bad Request
Bozuk sözdizimi
404
Not Found
Kaynak mevcut değil
500
Internal Server Error
Sunucu tarafı hata
9. Kaynak ile uç nokta arasındaki fark nedir?
Bir kaynak, veri varlığıdır (kullanıcı, sipariş, ürün). Bir uç nokta, o kaynağa erişim sağlayan URL yoludur.
10. URI tasarımı için en iyi uygulamalar nelerdir?
Fiiller değil, isimler kullanın. URI'leri küçük harfle ve birden çok kelimede kısa çizgiyle yazın. Koleksiyonlar için çoğul isimler kullanın.
Derin iç içe yapıları kaçının.
/users/123/posts/456/comments/789yerine/comments/789veya/comments?post_id=456düşünün.11. İdempotentlik nedir ve hangi HTTP yöntemleri idempotenttir?
Bir işlem, birden fazla kez yapılması tek sefer yapılmasıyla aynı sonucu üretiyorsa idempotenttir.
Yöntem
İdempotent
Neden
GETEvet
Okuma durum değiştirmez
PUTEvet
Aynı veriyle değiştirmek aynı sonucu verir
DELETEEvet
İki kez silmek kaynağı silinmiş halde bırakır
POSTHayır
İki kez oluşturmak iki kaynak üretir
PATCHHayır*
İşleme bağlıdır
Bir değeri ayarlayan PATCH idempotenttir; bir sayacı artıran PATCH değildir.
12. Güvenli ve idempotent yöntemler arasındaki fark nedir?
Güvenli yöntemler kaynakları değiştirmez (GET, HEAD, OPTIONS). İdempotent yöntemler birden fazla kez çağrılsa da aynı etkiyi yaratır (GET, PUT, DELETE).
Tüm güvenli yöntemler idempotenttir, ancak tüm idempotent yöntemler güvenli değildir. DELETE idempotenttir fakat güvenli değildir çünkü durumu değiştirir.
13. Sorgu parametrelerini ne zaman, yol parametrelerini ne zaman kullanmalısınız?
Yol parametreleri belirli bir kaynağı tanımlar. Sorgu parametreleri koleksiyonları filtreler, sıralar veya sayfalar.
14. İçerik müzakeresi (content negotiation) nedir?
İçerik müzakeresi, istemcilerin bir kaynağın farklı temsillerini talep etmesine olanak tanır. İstemci bir
Acceptbaşlığı gönderir ve sunucu uygun formatla yanıt verir.15. OPTIONS yönteminin amacı nedir?
OPTIONS, bir sunucunun belirli bir URL için desteklediği HTTP yöntemlerini döndürür. Tarayıcılar, çapraz kaynak isteklerine izin verilip verilmediğini kontrol etmek için CORS preflight isteklerinde kullanır.
Orta Düzey REST API Mülakat Soruları
Bu sorular, pratik uygulama ve karar alma yeteneğinizi ölçer. Orta düzey pozisyonlarda bekleyin.
16. 401 ile 403 arasındaki fark nedir?
Bu, en sık karıştırılan durum kodu ikilisidir. Kıdemli mühendislerin bile kod incelemelerinde bunları karıştırdığını gördüm.
401 Unauthorized
Kimliği doğrulanmamış demektir. Sunucu kimsiniz bilmiyor. Yanıtınız, kullanıcıyı oturum açmaya yönlendirmelidir.
403 Forbidden
Yetkisiz demektir. Sunucu kimsiniz biliyor ancak izniniz yok. Yeniden kimlik doğrulamak işe yaramaz.
Kimlik doğrulama ve yetkilendirme hata karar akış şeması. Görsel: Yazar.
17. 400 ile 422 arasındaki fark nedir?
Farkı açıklayan örnekler şunlardır:
400 Bad Request
Bozuk sözdizimini belirtir. Sunucu isteği ayrıştıramaz (geçersiz JSON yapısı, eksik zorunlu başlıklar).
422 Unprocessable Entity
Geçerli sözdizimi ancak anlamsal hatalar olduğunu belirtir. JSON geçerlidir ama veriler doğrulamadan geçmez (geçersiz e-posta formatı, çok kısa parola).
18. 409 Conflict'i ne zaman kullanmalısınız?
İstek, kaynağın mevcut durumu ile çakıştığında 409 kullanın:
19. Sayfalama nasıl uygulanır?
İki ana yaklaşım:
Offset tabanlı sayfalama
Basittir ancak büyük veri kümelerinde performans sorunları vardır.
İmleç (cursor) tabanlı sayfalama
Daha iyi ölçeklenir ve veri değiştiğinde "sayfa kaymasını" önler.
Stripe, GitHub ve Slack gibi şirketler, büyük veri kümeleri için imleç tabanlı sayfalama kullanır.
20. Yaygın API versiyonlama stratejileri nelerdir?
Üç ana yaklaşım vardır, her birinin farklı ödünleşimleri bulunur:
URI versiyonlama
En yaygın olanıdır. Açık ve hata ayıklaması kolaydır.
Başlık ile versiyonlama
URL'ler daha temizdir ancak tarayıcılarda test etmesi zordur.
Sorgu parametresi ile versiyonlama
Eklemek kolaydır ama URL'leri karmaşıklaştırır.
21. ETag nedir ve önbellekleme nasıl çalışır?
ETag, bir kaynak için sürüm tanımlayıcıdır. Sunucu bunu yanıtlarda gönderir; istemci, kaynağın değişip değişmediğini kontrol etmek için sonraki isteklerde geri gönderir.
22. REST API'leri için hangi kimlik doğrulama yöntemleri kullanılır?
En yaygın dört yöntem API Keys, Bearer Tokens, OAuth 2.0 ve JWT'dir:
Yöntem
Kullanım Durumu
Artılar
Eksiler
API Keys
Sunucudan sunucuya
Basit
Süresi yok, sızması kolay
Bearer Tokens
Oturum kimlik doğrulaması
Durum bilgisiz
Güvenli saklama şart
OAuth 2.0
Üçüncü taraf erişimi
Delege kimlik doğrulama
Karmaşık uygulama
JWT
Durum bilgisiz kimlik doğrulama
Kendi kendine yeter
Kara liste olmadan iptal edilemez
23. JWT nedir ve nasıl çalışır?
JWT (JSON Web Token) üç parçadan oluşur: Header, Payload ve Signature. Python'da JSON ile çalışma hakkında daha fazla bilgi edinin.
Sunucu belirteci imzalar; istemciler isteklerle birlikte gönderir. Sunucu, veritabanı sorgusu yapmadan imzayı doğrular.
24. RS256 ile HS256 arasındaki fark nedir?
HS256 (simetrik): Aynı gizli anahtar imzalar ve doğrular. Birden fazla hizmetin belirteç doğrulaması yapması gerektiğinde risklidir.
RS256 (asimetrik): Özel anahtar imzalar, açık anahtar doğrular. Belirteçleri birden çok hizmetin doğruladığı dağıtık sistemler için önerilir.
25. HATEOAS nedir?
HATEOAS (Application State'in Motoru Olarak Hipermedya), yanıtlarda ilgili eylem ve kaynaklara bağlantılar bulunması demektir.
Pratikte, çoğu API HATEOAS'ı tam olarak uygulamaz. Kavramı bilin, ancak çoğu işte tam uyum beklemeyin. Büyük teknoloji şirketleri bile nadiren tamamen HATEOAS uyumlu API'ler oluşturur.
26. Hataları tutarlı bir şekilde nasıl ele alırsınız?
Tutarlı hata yanıtları için RFC 7807 Problem Details formatını kullanın:
27. Oran sınırlama (rate limiting) nedir ve neden önemlidir?
Oran sınırlama, API'nizi kötüye kullanıma karşı korur ve adil kullanımı sağlar. Yaygın bir yanıt:
28. Filtreleme ve sıralamayı nasıl tasarlarsınız?
Açık kurallarla sorgu parametreleri kullanın:
İleri Düzey REST API Mülakat Soruları
Bu sorular mimari düşünmeyi ölçer. Kıdemli pozisyonlar için bekleyin.
29. OAuth 2.0 ile OAuth 2.1 arasında neler değişti?
OAuth 2.1, güvenlik en iyi uygulamalarını birleştirir:
Özellik
OAuth 2.0
OAuth 2.1
PKCE
Opsiyonel
TÜM istemciler için zorunlu
Implicit Grant
Desteklenir
Kaldırıldı
Password Grant
Desteklenir
Kaldırıldı
Redirect URI
Esnek eşleştirme
Birebir eşleşme zorunlu
Temel mesaj: Tüm istemci türleri için PKCE ile Yetkilendirme Kodu akışını kullanın.
30. Ödeme uç noktaları için idempotentliği nasıl uygularsınız?
POST isteklerini yeniden denemelere karşı güvenli kılmak için idempotency key'leri kullanın:
İstemci bir UUID üretir ve istekle birlikte gönderir. Aynı anahtar tekrar gelirse, önbellekteki yanıtı döndürün.
31. Dağıtık bir oran sınırlayıcıyı nasıl tasarlarsınız?
Dağıtık sistemlerde, trafik örneklerde dengelendiği için bellek içi sayaçları kullanamazsınız. Bu, adayların sıklıkla takıldığı yaygın bir noktadır.
Mimari:
32. gRPC'yi REST yerine ne zaman seçersiniz?
gRPC ile REST arasındaki seçim, spesifik gereksinimlerinize bağlıdır.
gRPC'yi şunlar için seçin:
REST'i şunlar için seçin:
33. Uzun süreli işlemleri nasıl ele alırsınız?
Asenkron istek desenini kullanın:
İstemci isteği gönderir
Sunucu bir durum URL'siyle
202 Accepteddöndürürİstemci tamamlanana kadar durum URL'sini yoklar
34. Saga deseni nedir?
Saga, mikro servisler arasında kilitleme olmadan dağıtık işlemleri yönetir. Her servis yerel bir işlem yürütür ve bir olay yayınlar. Bir adım başarısız olursa, telafi işlemleri önceki adımları geri alır.
35. Yaygın JWT güvenlik açıkları nelerdir?
Algoritma karışıklığı: Saldırgan RS256'yı HS256'ya çevirir ve açık anahtarla imzalar. Çözüm: algoritmaları her zaman beyaz listeye alın.
"none" algoritması: Saldırgan imzayı tamamen kaldırır. Çözüm: "none" algoritmasını reddedin.
Back-end Geliştirici REST API Soruları
Bu sorular, sunucu tarafı uygulama ayrıntıları, veritabanı optimizasyonu ve back-end mühendislerinin günlük karşılaştığı performans kalıplarına odaklanır.
36. N+1 sorgu problemi nedir?
N+1 problemi, N kayıt getirdikten sonra her kaydın ilişkisi için ayrı bir sorgu çalıştırdığınızda ortaya çıkar.
Çözümler:
Django: Yabancı anahtarlar için
select_related(), çok-çok içinprefetch_related()kullanın.SQLAlchemy:
joinedload()veyaselectinload()kullanın.37. Bağlantı havuzlamasını nasıl yapılandırırsınız?
Bağlantı havuzlama, her istek için yeni bağlantı oluşturmak yerine veritabanı bağlantılarını yeniden kullanır.
38. Hangi önbellekleme stratejilerini biliyorsunuz?
Farklı erişim kalıpları için optimize edilmiş üç temel önbellekleme stratejisi vardır:
Strateji
Açıklama
Kullanım Durumu
Cache-Aside
Uygulama önce önbelleği, sonra DB'yi kontrol eder
Okuma ağırlıklı, eskimeye toleranslı
Write-Through
Önbellek ve DB'ye birlikte yazma
Tutarlılığın kritik olduğu durumlar
Write-Behind
Önce önbelleğe yaz, DB'yi asenkron güncelle
Yüksek yazma hacmi
39. Webhook imza doğrulamasını nasıl uygularsınız?
Webhook imza doğrulaması, isteğin gerçekten beklenen gönderen tarafından geldiğini garantiler. İşte HMAC kullanan bir uygulama:
40. API sağlığını gösteren metrikler nelerdir?
API'nizin sağlığını değerlendirmek için şu dört temel metriği izlemelisiniz:
Metrik
Açıklama
Alarm Eşiği
P50 Gecikme
Medyan yanıt süresi
Baz değer
P99 Gecikme
En yavaş %1
> 2s, 5 dk boyunca
Hata Oranı
% olarak 4xx/5xx
> %1, 5 dk boyunca
Throughput
Saniyedeki istek sayısı
Kapasite planlama
Full Stack Geliştirici REST API Soruları
Bu sorular, tarayıcı güvenliği, durum yönetimi ve çapraz kaynak iletişim başta olmak üzere hem istemci hem sunucu kaygılarını anlama düzeyinizi ölçer.
41. Tarayıcı ne zaman CORS preflight isteği gönderir?
Tarayıcılar şu durumlarda OPTIONS preflight gönderir:
42. CORS'u güvenli şekilde nasıl yapılandırırsınız?
Güvenli CORS yapılandırması, kökenleri açıkça beyaz listelemeyi ve kimlik bilgilerini dikkatle ele almayı gerektirir. İşte güvenli bir Express.js kurulumu:
Kimlik bilgileriyle birlikte joker (
*) asla kullanmayın.nullorigin'e asla izin vermeyin.43. İstemci tarafında belirteçleri nerede saklamalısınız?
Belirteç saklama, XSS ve CSRF zafiyetleri arasında güvenlik ödünleşimleri içerir"
Saklama
XSS Riski
CSRF Riski
Öneri
localStorage
Yüksek
Yok
Belirteçler için kaçının
HttpOnly Cookie
Düşük
Önlem gerektirir
Önerilir
Bellek içi
Düşük
Düşük
Erişim belirteçleri için en iyisi
En iyi uygulama: Yenileme belirteçlerini HttpOnly çerezlerde
SameSite=Strictile saklayın. Erişim belirteçlerini bellekte tutun.44. WebSocket yerine SSE'yi ne zaman kullanmalısınız?
Seçim, çift yönlü iletişime ihtiyaç duyup duymadığınıza ve yeniden bağlanmayı nasıl ele almak istediğinize bağlıdır:
Özellik
WebSockets
SSE
Yön
Çift yönlü
Sunucudan istemciye
Yeniden bağlanma
Manuel
Otomatik
İkili veri
Evet
Hayır
Bildirimler, canlı akışlar, hisse senedi verileri için SSE kullanın. Sohbet, çok oyunculu oyunlar, ortak düzenleme için WebSocket kullanın.
45. Dosya yüklemelerini nasıl ele alırsınız?
Büyük dosyalar için ilerleme takibiyle parçalı yüklemeler kullanın:
Senaryo Bazlı REST API Soruları
Bu sorular, REST ilkelerini gerçek dünya problemlerine uygulayabilme yeteneğinizi değerlendirir. Mülakatçılar, tasarım sürecinizi ve mimari ödünleşimleri nasıl yaptığınızı görmek ister.
46. Bir otel rezervasyon sistemi için REST API tasarlayın
Bir otel rezervasyon sistemi, arama, uygunluk kontrolü ve rezervasyonları çifte rezervasyonları engelleyerek yönetebilmelidir. Çekirdek kaynaklar şunlardır:
Kaynaklar:
/hotels- Otelleri listele ve ara/hotels/{id}/rooms- Uygun odalar/bookings- Rezervasyon oluştur ve yönet/guests/{id}- Misafir profilleriKilit kararlar:
47. Yumuşak silmeleri (soft delete) nasıl uygularsınız?
Kayıtları kaldırmak yerine bir
deleted_atzaman damgası ekleyin:48. Müşterileri bozmadan v1'den v2'ye nasıl geçiş yaparsınız?
Strangler Fig desenini kullanın:
49. Karmaşık filtrelemeli bir arama API'sini nasıl tasarlarsınız?
Birden çok filtreli ürün araması için:
Tasarım kararları:
50. Mikro servis mimarisinde API versiyonlamayı nasıl ele alırsınız?
Seçenekler:
Ağ geçidi (gateway) düzeyinde versiyonlama: API geçidi
/v1/*eski servislere,/v2/*yenilerine yönlendirirServis düzeyinde versiyonlama: Her servis kendi sürüm uzlaşmasını yönetir
Tüketici güdümlü sözleşmeler: Uyumluluğu sağlamak için Pact veya benzeri araçlar kullanın
Çoğu ekip için ağ geçidi düzeyinde versiyonlama en temiz ayrımı sağlar.
51. Farklı kullanıcı katmanları için oran sınırlamayı nasıl uygularsınız?
Çözüm, katmana özel sınırları tanımlayıp bunları Redis sayaçlarıyla denetlemeyi içerir:
Davranışsal REST API Soruları
Bu sorular, iletişim becerilerinizi ve gerçek dünya API zorluklarını nasıl ele aldığınızı değerlendirir. Sorun çözme sürecinizi ve paydaşlarla nasıl çalıştığınızı göstermeye odaklanın.
52. REST'i teknik olmayan bir kişiye açıklayın
"Bir REST API'yi, restorandaki bir garson gibi düşünün. Siz (müşteri) mutfağa doğrudan gidemezsiniz. Bunun yerine garsona menüden ne istediğinizi söylersiniz ve o da getirir. Menü, neleri sipariş edebileceğinizi listeleyen API dokümantasyonuna benzer. Garson belirli kuralları izler: bir şeyi istersiniz (GET), yeni bir şey sipariş edersiniz (POST) veya bir şeyi geri gönderirsiniz (DELETE). Mutfakta bir şey kalmadıysa, garson size söyler (404 Not Found) ki sonsuza kadar beklemeyesiniz."
Bu benzetme, paydaş toplantılarında şaşırtıcı derecede iyi çalışır.
53. Bir API'yi optimize ettiğiniz bir zamanı anlatın
STAR yöntemini kullanın:
54. API tüketicilerine kırıcı değişiklikleri nasıl iletirsiniz?
Erken duyurun: Büyük değişiklikler için en az 6-12 ay önceden bildirin
Sunset başlığı kullanın:
Sunset: Sat, 31 Dec 2026 23:59:59 GMTGeçiş kılavuzları sağlayın: Tam olarak neyin değiştiğini ve nasıl uyarlanacağını belgeleyin
Her iki sürümü de çalıştırın: Geçiş sırasında eski sürümü açık tutun
Kullanımı izleyin: Hangi istemcilerin hâlâ eski sürümde olduğunu takip edin
55. API'ler için hangi dokümantasyonları oluşturursunuz?
Gerekli dokümantasyon şunları içerir:
56. REST'i ne zaman KULLANMAZSINIZ?
REST her zaman doğru seçim değildir. alternatifleri ne zaman kullanacağınızı bilmek mimari olgunluğu gösterir. Ekiplerin, REST'in sorun çözdüğünden çok daha fazla sorun yarattığı kullanım durumlarına zorlandığını gördüm.
Senaryo
Daha İyi Alternatif
Gerçek zamanlı sohbet veya oyun
WebSockets
Yüksek performanslı dahili servisler
gRPC
Karmaşık iç içe veri sorguları
GraphQL
Olay güdümlü mimariler
Mesaj aracılar (Kafka, RabbitMQ)
Çift yönlü akış
gRPC çift yönlü veya WebSockets
REST API Hızlı Referans
HTTP yöntem özelliklerini, durum kodlarını veya yaygın kalıpları doğrulamanız gerektiğinde bu bölümü hızlı başvuru olarak kullanın; ister mülakat hazırlığında ister gerçek geliştirmede.
HTTP Yöntemleri Karşılaştırması
Bu tablo, her HTTP yönteminin kilit özelliklerini özetler ve kullanıcı durumunuza uygun olanı seçmenize yardımcı olur.
Yöntem
Güvenli
İdempotent
Önbelleğe Alınabilir
Tipik Kullanım
GET
Evet
Evet
Evet
Kaynak getir
POST
Hayır
Hayır
Koşullu
Kaynak oluştur
PUT
Hayır
Evet
Hayır
Kaynağı değiştir
PATCH
Hayır
Hayır
Koşullu
Kısmi güncelle
DELETE
Hayır
Evet
Hayır
Kaynağı kaldır
HEAD
Evet
Evet
Evet
Yalnızca başlıkları al
OPTIONS
Evet
Evet
Hayır
CORS preflight
Durum Kodları Referansı
En yaygın kullanılan HTTP durum kodları burada kategoriye göre düzenlenmiştir. Tüm spesifikasyonu ezberlemekten ziyade her birinin ne zaman kullanılacağını anlamaya odaklanın.
2xx Başarı
4xx İstemci Hataları
5xx Sunucu Hataları
Kaçınılması Gereken Yaygın Hatalar
Deneyimli geliştiriciler bile bu tuzaklara düşer. REST API tasarlarken veya uygularken şu yaygın hatalara dikkat edin:
URL'lerde fiil kullanmak (ör.
/getUsersyerine/users)Hata durumları için 200 OK döndürmek; bu, istemci tarafı hata yönetimini bozar
401 ile 403'ü karıştırmak (Kimlik Doğrulama vs. Yetkilendirme)
URL'leri iki seviyeden fazla iç içe yapmak
Belirteçleri localStorage'da saklamak (XSS açıkları yaratır)
POST isteklerinde idempotentliği göz ardı etmek
Eyleme geçirilebilir ayrıntılar içermeyen genel hata mesajları döndürmek
Sonuç
Tanımları ezberlemenin her teknik mülakattan geçmenizi garanti etmeyeceğinin farkındayım. Gerçek şu ki, gerçek dünya mühendisliği sıklıkla az önce bahsettiğimiz "katı" kuralları esnetmeyi gerektirir ve mülakatçılar, RFC spesifikasyonlarını ezbere okumaktan ziyade muhakemenize önem verir. Çok uzmanlaşmış roller için, derin alan bilgisi veya belirli bir çerçevede uzmanlık yine belirleyici olabilir.
Ancak bu REST temellerine hâkim olmak, bu sorularla birebir karşılaşmasanız bile önemlidir. Bu, modern webin nasıl çalıştığını anlamak için bir plan görevi görür. Yeni bir sistem tasarlamanız ya da üretimde bir kesintiyi hata ayıklamanız istendiğinde, (daha önce açıkladığım gibi) 401 ile 403 arasındaki farkı anlamak, sorunları daha hızlı çözmenizi sağlar. Yalnızca çalışan kod yazmak değil, API etkileşimlerinizi standartlaştırmanın da kıdemli bir mühendisin alametifarikası olduğunu net biçimde görürsünüz.
Bu sistemleri derinlemesine inşa etmeye dalmak isterseniz, Python ile API'lere Giriş kursumuza göz atın.