DEV Community

Cover image for Sahte API ile Test Nasıl Yapılır ve Gerektiğinde Kendi Sahte API'nizi Nasıl Oluşturursunuz
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

Sahte API ile Test Nasıl Yapılır ve Gerektiğinde Kendi Sahte API'nizi Nasıl Oluşturursunuz

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.

Apidog'u bugün deneyin

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:

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE

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, 429 gibi 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
Enter fullscreen mode Exit fullscreen mode

Yanıt örneği şu yapıya benzer:

{
  "userId": 1,
  "id": 1,
  "title": "...",
  "body": "..."
}
Enter fullscreen mode Exit fullscreen mode

Bir gönderinin yorumlarını almak için:

curl https://jsonplaceholder.typicode.com/posts/1/comments
Enter fullscreen mode Exit fullscreen mode

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
  }'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Ürün aramak için:

curl "https://dummyjson.com/products/search?q=phone"
Enter fullscreen mode Exit fullscreen mode

Sayfalandırma için:

curl "https://dummyjson.com/products?limit=10&skip=20"
Enter fullscreen mode Exit fullscreen mode

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Tek kullanıcı getirme örneği:

curl https://reqres.in/api/users/2 \
  -H "x-api-key: reqres-free-v1"
Enter fullscreen mode Exit fullscreen mode

Sayfalandırılmış kullanıcı listesi:

curl "https://reqres.in/api/users?page=2" \
  -H "x-api-key: reqres-free-v1"
Enter fullscreen mode Exit fullscreen mode

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"
  }'
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

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);
Enter fullscreen mode Exit fullscreen mode

Python requests ile örnek kullanım

import requests

r = requests.get("https://jsonplaceholder.typicode.com/todos/1")
r.raise_for_status()

print(r.json())
Enter fullscreen mode Exit fullscreen mode

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())
Enter fullscreen mode Exit fullscreen mode

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ız subscription_tier, billing.address veya permissions[] beklerken JSONPlaceholder size posts ve albums döndürür.

  • Duruma ihtiyacınız vardır.

    Gerçek bir sepet, ürün eklediğinizde güncellenmelidir. Genel kukla API ise POST isteğinizi döndürdükten sonra bu veriyi unutur.

  • Kontrollü hata senaryoları gerekir.

    Kullanıcı arayüzünüzün 429, yavaş 200, bozuk JSON veya 500 yanı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"
}
Enter fullscreen mode Exit fullscreen mode

2. Akıllı mock'un verileri üretmesine izin verin

Apidog alan adlarını ve şema tiplerini kullanarak anlamlı sahte veriler üretir.

Örnekler:

  • email alanı için e-posta
  • createdAt alanı için zaman damgası
  • price alanı için sayı
  • country alanı 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);
Enter fullscreen mode Exit fullscreen mode

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 Found
  • 500 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)