Bir ön uç geliştirirken, HTTP istemcisiyle hata ayıklarken veya yeni bir HTTP kitaplığını denerken çoğu zaman gerçek görünümlü JSON döndüren hazır bir uç noktaya ihtiyaç duyarsınız. Bir kukla API bunu sağlar: arka uç kurmadan hemen çağırabileceğiniz herkese açık ve ücretsiz bir servis. Bu rehberde JSONPlaceholder, DummyJSON ve reqres.in gibi genel kukla API'leri nasıl kullanacağınızı, koddan nasıl çağıracağınızı ve ne zaman kendi sahte REST API'nizi oluşturmanız gerektiğini göreceksiniz. Fetch tarafında temel bilgileri tazelemek isterseniz MDN Fetch API rehberi iyi bir tamamlayıcıdır.
Bir kukla API aslında nedir?
Bir kukla API, kullanıcılar, gönderiler, ürünler, sepetler veya yapılacaklar gibi yaygın kaynaklar için önceden hazırlanmış JSON yanıtları döndüren barındırılmış bir HTTP servisidir. Genellikle kayıt gerekmez, sunucu kurmazsınız ve üretim verisini bozma riski taşımazsınız.
Çoğu kukla API şu HTTP metotlarını kabul eder:
GETPOSTPUTPATCHDELETE
Ancak önemli nokta şudur: yazma işlemleri çoğu zaman kalıcı değildir. Örneğin POST isteği yaptığınızda servis gönderdiğiniz veriyi sahte bir id ile geri döndürebilir, fakat bu kayıt gerçekten saklanmaz.
Bu nedenle kukla API'ler şunlar için idealdir:
- Ön uç prototipi geliştirme
- HTTP istemcisi test etme
-
fetch, Axios veya başka istemcilerle pratik yapma - Sayfalandırma, listeleme ve detay ekranlarını hızlıca ayağa kaldırma
Şunlar için ise yetersiz kalabilir:
- Kendi veri modelinizi birebir test etmek
- Kalıcı sepet, oturum veya kullanıcı durumu simüle etmek
- Kontrollü
500,404,429gibi hata senaryoları üretmek - OpenAPI sözleşmenize birebir uyan yanıtlar almak
Test etmek için en iyi ücretsiz kukla ve sahte API'ler
Aşağıdaki servislerin tamamı ücretsizdir ve sizin tarafınızda arka uç kurulumu gerektirmez.
1. JSONPlaceholder
JSONPlaceholder klasik bir test API'sidir. Blog tarzı veri modelleriyle çalışır ve ilişkili kaynaklar sunar:
- 100 gönderi
- 500 yorum
- 100 albüm
- 5.000 fotoğraf
- 200 yapılacak
- 10 kullanıcı
Örneğin tek bir gönderiyi almak için:
curl https://jsonplaceholder.typicode.com/posts/1
Yanıt örneği şu yapıya benzer:
{
"userId": 1,
"id": 1,
"title": "...",
"body": "..."
}
Bir gönderinin yorumlarını almak için:
curl https://jsonplaceholder.typicode.com/posts/1/comments
Yazma isteği de gönderebilirsiniz:
curl -X POST https://jsonplaceholder.typicode.com/posts \
-H "Content-Type: application/json" \
-d '{
"title": "Merhaba",
"body": "Test içeriği",
"userId": 1
}'
Bu istek başarılı görünür, ancak veri kalıcı olarak kaydedilmez. POST /posts genellikle sahte bir id: 101 döndürür.
JSONPlaceholder özellikle şu işler için uygundur:
- Blog listeleme ekranları
- Detay sayfaları
- Yorum listeleri
- İç içe veri çekme senaryoları
2. DummyJSON
DummyJSON daha geniş veri alanları sunar. Özellikle e-ticaret ve kullanıcı arayüzü prototipleri için kullanışlıdır.
Desteklediği bazı kaynaklar:
- Ürünler
- Sepetler
- Kullanıcılar
- Gönderiler
- Yorumlar
- Alıntılar
- Yapılacaklar
- Tarifler
Tek bir ürünü almak için:
curl https://dummyjson.com/products/1
Ürün aramak için:
curl "https://dummyjson.com/products/search?q=phone"
Sayfalandırma için:
curl "https://dummyjson.com/products?limit=10&skip=20"
DummyJSON ayrıca token döndüren basit bir kimlik doğrulama akışı da sağlar. Bu, gerçek bir kimlik sağlayıcısı kurmadan giriş ekranı ve token saklama mantığını test etmek için kullanışlıdır.
Örnek giriş isteği:
curl -X POST https://dummyjson.com/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "emilys",
"password": "emilyspass"
}'
DummyJSON özellikle şu işler için uygundur:
- Ürün listeleme ekranları
- Sepet arayüzleri
- Giriş formları
- Token ile istek gönderme testleri
3. reqres.in
reqres.in istek ve yanıt yaşam döngüsüne odaklanır. Kullanıcı listeleme, tek kullanıcı getirme, kayıt, giriş ve gecikmeli yanıt senaryoları için tasarlanmıştır.
Dikkat edilmesi gereken nokta: ücretsiz katman artık API anahtarı başlığı bekler. İsteklerde şu başlığı göndermeniz gerekir:
x-api-key: reqres-free-v1
Tek kullanıcı getirme örneği:
curl https://reqres.in/api/users/2 \
-H "x-api-key: reqres-free-v1"
Sayfalandırılmış kullanıcı listesi:
curl "https://reqres.in/api/users?page=2" \
-H "x-api-key: reqres-free-v1"
Giriş örneği:
curl -X POST https://reqres.in/api/login \
-H "Content-Type: application/json" \
-H "x-api-key: reqres-free-v1" \
-d '{
"email": "eve.holt@reqres.in",
"password": "cityslicka"
}'
reqres.in özellikle şu işler için uygundur:
- Sayfalandırma
- Giriş ve kayıt akışları
- Başarılı ve başarısız auth yanıtları
- Gecikmeli yanıt testleri
Hangi kukla API ne için kullanılmalı?
| Kukla API | En iyi olduğu kullanım | Kimlik doğrulama akışı | Yazma kalıcılığı |
|---|---|---|---|
| JSONPlaceholder | İç içe okumalar, blog tarzı veriler | Yok | Sahte, kaydedilmez |
| DummyJSON | E-ticaret, sepetler, giriş ekranları | Evet, token | Sahte, kaydedilmez |
| reqres.in | Sayfalandırma, kayıt/giriş demoları | API anahtarı başlığı | Sahte, kaydedilmez |
Bu üçünün dışında daha fazla seçenek arıyorsanız, test için genel API'ler özeti daha özel servisleri kapsar. Hava durumu, para birimi veya tematik veri arıyorsanız geliştiriciler için ücretsiz genel API'ler listesi de işinize yarar.
Kodunuzda kukla API nasıl çağırılır?
Kukla API çağırmak, herhangi bir HTTP uç noktasını çağırmaktan farklı değildir.
JavaScript fetch ile GET ve POST
Aşağıdaki örnek önce bir kullanıcıyı okur, sonra yeni bir kullanıcı oluşturma isteği gönderir.
// Oku
const res = await fetch('https://dummyjson.com/users/1');
if (!res.ok) {
throw new Error(`HTTP hata kodu: ${res.status}`);
}
const user = await res.json();
console.log(user.firstName);
// Yaz: geri yansıtılır, kalıcı değildir
const created = await fetch('https://dummyjson.com/users/add', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
firstName: 'Ada',
lastName: 'Lovelace',
}),
});
if (!created.ok) {
throw new Error(`HTTP hata kodu: ${created.status}`);
}
const createdUser = await created.json();
console.log(createdUser);
Burada POST başarılı görünür, fakat DummyJSON veriyi kalıcı olarak saklamaz. Bu davranış prototipleme için yeterlidir, ancak gerçek durum yönetimi testleri için yeterli değildir.
Axios ile örnek kullanım
import axios from 'axios';
const { data } = await axios.get('https://jsonplaceholder.typicode.com/todos/1');
console.log(data);
POST örneği:
import axios from 'axios';
const { data } = await axios.post('https://jsonplaceholder.typicode.com/posts', {
title: 'Test başlığı',
body: 'Test gövdesi',
userId: 1,
});
console.log(data);
Python requests ile örnek kullanım
import requests
r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
r.raise_for_status()
print(r.json())
POST örneği:
import requests
payload = {
"title": "Test başlığı",
"body": "Test gövdesi",
"userId": 1
}
r = requests.post(
"https://jsonplaceholder.typicode.com/posts",
json=payload
)
r.raise_for_status()
print(r.json())
Bu örnekleri doğrudan test dosyalarınıza koyarak çalışan bir entegrasyon iskeleti oluşturabilirsiniz. Testlerde daha inandırıcı alanlara ihtiyacınız varsa gerçekçi API test verileri oluşturma rehberi, test123 yerine üretim verisine benzeyen ad, e-posta ve zaman damgaları üretmeyi gösterir.
Genel bir kukla API ne zaman yeterli olmaz?
Genel kukla API'ler hızlı başlamak için iyidir, ancak ihtiyaçlarınız özelleştiğinde sınıra gelirsiniz.
Yaygın problemler şunlardır:
Veri şekliniz eşleşmez.
Uygulamanızsubscription_tier,billing.addressveyapermissions[]beklerken JSONPlaceholder sizepostsvealbumsdöndürür.Duruma ihtiyacınız vardır.
Gerçek bir sepet, ürün eklediğinizde güncellenmelidir. Genel kukla API isePOSTisteğinizi döndürdükten sonra bu veriyi unutur.Kontrollü hata senaryoları gerekir.
Kullanıcı arayüzünüzün429, yavaş200, bozuk JSON veya500yanıtına nasıl tepki verdiğini test etmek isteyebilirsiniz. Genel servisler bu davranışları her zaman kontrol etmenize izin vermez.Arka uç henüz hazır değildir.
Ön uç ve arka uç ekipleri çoğu zaman paralel çalışır. API canlıya çıkmadan önce, üzerinde anlaşılan sözleşmeye uyan uç noktalara ihtiyaç duyarsınız.
Bu noktada başkasının API'sini kullanmak yerine kendi mock API'nizi oluşturmanız gerekir. Yani istediğiniz şemaya uyan, kontrol ettiğiniz yanıtları döndüren ve gerektiğinde hata senaryoları üreten bir API. Bu yaklaşım test için oluşturulmuş mock API olarak düşünülebilir.
Apidog ile kendi sahte API'nizi nasıl oluşturursunuz?
Apidog, API tasarımı, testi, hata ayıklama ve mock oluşturmayı tek yerde birleştiren bir API platformudur. Mock sistemi şema odaklı çalışır: uç noktanızın yapısını okur ve yerleşik Faker kurallarıyla gerçekçi sahte veriler üretir.
İş akışının kısa versiyonu şöyledir:
1. Uç nokta oluşturun veya içe aktarın
Apidog'da yeni bir API tanımlayın ya da mevcut OpenAPI/Swagger dosyanızı içe aktarın. Böylece mock yanıtları doğrudan API sözleşmenizden üretilebilir.
Örneğin bir kullanıcı yanıtı şu alanlara sahip olabilir:
{
"id": 1,
"email": "user@example.com",
"createdAt": "2026-06-24T10:00:00Z",
"subscription_tier": "pro"
}
2. Akıllı mock'un verileri üretmesine izin verin
Apidog alan adlarını ve şema tiplerini kullanarak anlamlı sahte veriler üretir.
Örnekler:
-
emailalanı için e-posta -
createdAtalanı için zaman damgası -
pricealanı için sayı -
countryalanı için ülke adı
Gerektiğinde alan bazında kuralları özelleştirebilirsiniz. Böylece rastgele string yerine beklenen veri tipine daha yakın yanıtlar alırsınız.
3. Mock URL'sini uygulamanızdan çağırın
Apidog her uç nokta için çağrılabilir bir mock URL üretir. Bunu ön uç uygulamanızdan, testlerinizden veya curl ile çağırabilirsiniz.
Örnek kullanım:
const res = await fetch('https://mock-url.example.com/users/1');
const user = await res.json();
console.log(user.email);
Buradaki fark şudur: genel kukla API'de veri modeli servisin sunduğu kadardır; Apidog mock'unda yanıt sizin API sözleşmenizle eşleşir.
4. Hata ve gecikme senaryoları ekleyin
Mock yanıtlarını yalnızca başarılı 200 senaryosu için kullanmak zorunda değilsiniz. Aşağıdaki durumları da modelleyebilirsiniz:
404 Not Found500 Internal Server Error- Gecikmeli yanıt
- Boş liste
- Eksik veya hatalı alanlar
Bu sayede kullanıcı arayüzünüzün yalnızca mutlu yolu değil, olumsuz durumları da doğru ele aldığını test edebilirsiniz.
Mock spesifikasyonunuzdan üretildiği için API tasarımınız değiştikçe güncel kalır. Bir alanı değiştirirsiniz, mock yanıtı da buna göre şekillenir. Spesifikasyondan mock üretme konusunu daha detaylı incelemek isterseniz OpenAPI şemalarından mock veri oluşturma rehberine bakabilirsiniz.
Genel kukla API vs. kendi Apidog mock'unuz
| İhtiyaç | Genel kukla API | Apidog mock |
|---|---|---|
| Hızlı salt okunur veri | Evet | Evet |
| Kendi veri şekilleriniz | Hayır | Evet |
| Özel hata yanıtları | Hayır | Evet |
| Gecikme senaryoları | Sınırlı | Evet |
| OpenAPI sözleşmesiyle eşleşme | Hayır | Evet |
| Kurulum süresi | Sıfır | Dakikalar |
İkisi farklı ihtiyaçları çözer. Beş saniye içinde herhangi bir JSON'a ihtiyacınız varsa genel kukla API yeterlidir. Gerçek API sözleşmenize uyan, kontrol edilebilir yanıtlar istiyorsanız kendi mock'unuzu oluşturmanız gerekir.
Pratik yaklaşım şudur:
- Hızlı denemeler için JSONPlaceholder, DummyJSON veya reqres.in kullanın.
- Ürünleşecek ekranlar ve testler için proje sözleşmenize bağlı mock API oluşturun.
- Hata, gecikme ve sınır durumlarını mock seviyesinde modelleyin.
Sıkça sorulan sorular
Bir kukla API, mock API ile aynı mıdır?
Kısmen örtüşürler, ancak aynı şey değildirler.
Kukla API genellikle JSONPlaceholder gibi sabit örnek veriler sunan herkese açık servisleri ifade eder. Mock API ise sizin tanımladığınız veri şekillerini ve davranışları döndüren, kontrol ettiğiniz API'dir.
Kısaca:
- Kukla API: başkasının hazırladığı hazır test API'si
- Mock API: sizin sözleşmenize göre oluşturduğunuz test API'si
Detaylı açıklama için mock API nedir rehberine bakabilirsiniz.
Ücretsiz sahte API'leri gerçek verilerle kullanmak güvenli midir?
Hayır. Gerçek kullanıcı verilerini, sırları, parolaları veya token'ları genel kukla API'lere göndermeyin. POST ettiğiniz her şeyi günlüklenebilir ve görünür kabul edin.
Bu servisleri yalnızca şunlarla kullanın:
- Sahte kullanıcı adları
- Test e-postaları
- Dummy token'lar
- Üretimle ilişkisi olmayan veriler
Gizlilik, kalıcılık veya erişim kontrolü gerekiyorsa kendi mock'unuzu veya gerçek arka ucunuzu kullanın.
Kukla API'ler gönderdiğim verileri kaydediyor mu?
Genellikle hayır. JSONPlaceholder, DummyJSON ve reqres.in yazma isteklerini kabul eder ve sahte bir sonuç döndürür, fakat veriyi kalıcı olarak saklamaz.
Örneğin bir POST isteğinden sonra dönen id, çoğu zaman yalnızca yanıtı gerçekçi göstermek içindir. Sayfayı yenilediğinizde veya aynı kaydı tekrar çağırdığınızda oluşturduğunuz veri mevcut olmaz.
Kalıcı duruma ihtiyacınız varsa şu seçeneklerden birini kullanın:
- Durum bilgisi olan özel mock
- Test veritabanı
- Gerçek geliştirme/staging arka ucu
Hiç kod yazmadan sahte API oluşturabilir miyim?
Evet. Apidog ile uç nokta şeklini tanımlayabilir veya OpenAPI dosyanızı içe aktarabilirsiniz. Ardından akıllı mock, şemaya göre yanıt verisini üretir. Sunucu kodu yazmadan çalışan mock uç noktaları elde edebilirsiniz.
Sonuç
JSONPlaceholder, DummyJSON ve reqres.in gibi genel kukla API'ler, prototipleme ve öğrenme için gerçekçi JSON elde etmenin en hızlı yoludur. Kurulum gerektirmezler, ücretsizdirler ve birkaç saniye içinde kullanılabilirler.
Ancak kendi veri şekillerinize, kalıcı duruma, kontrollü hata yanıtlarına veya OpenAPI sözleşmenizle birebir uyuma ihtiyacınız varsa kendi mock API'nizi oluşturmanız daha doğru yaklaşımdır.
Apidog bu akışı pratik hale getirir: spesifikasyonunuzu içe aktarın, şema odaklı mock veriler üretin ve arka uç hazır olmadan uç noktalarınızı çağırmaya başlayın. Apidog'u indirin ve bir sonraki API sözleşmenizi dakikalar içinde çalışan bir mock'a dönüştürün.

Top comments (0)