DEV Community

Cover image for DummyJSON Nedir? Ücretsiz Test REST API (Kendi API'nizi Nasıl Oluşturursunuz?)
Tobias Hoffmann
Tobias Hoffmann

Posted on • Originally published at apidog.com

DummyJSON Nedir? Ücretsiz Test REST API (Kendi API'nizi Nasıl Oluşturursunuz?)

Arka uç hazır değilken kullanıcı arayüzü geliştiriyorsanız, ekranda işlemek için gerçekçi verilere ihtiyacınız olur. DummyJSON; ürünler, kullanıcılar, sepetler ve benzeri kaynakları düz HTTP üzerinden döndüren, kayıt gerektirmeyen ücretsiz bir sahte REST API’dir. Bu rehberde DummyJSON’ı nasıl kullanacağınızı, diğer genel test API’leriyle nasıl karşılaştıracağınızı ve sabit yer tutucu veriler yetmediğinde kendi mock API’nizi nasıl kuracağınızı göreceksiniz.

Apidog'u bugün deneyin

DummyJSON nedir?

DummyJSON, ücretsiz bir yer tutucu JSON API’sidir. Bir URL’ye HTTP isteği gönderirsiniz; API size yapılandırılmış, inandırıcı örnek veriler döndürür. Veritabanı kurmanız, API anahtarı almanız veya hesap oluşturmanız gerekmez.

DummyJSON örnek ekranı

DummyJSON özellikle şu durumlarda kullanışlıdır:

  • Ürün listesi, kullanıcı profili veya sepet ekranı geliştirirken
  • Sayfalama, arama ve filtreleme davranışlarını test ederken
  • Eğitim, demo veya prototip hazırlarken
  • Gerçek API henüz hazır değilken frontend akışını tamamlamak istediğinizde

Veriler sahte olsa da tutarlıdır. Örneğin bir ürün kaydında başlık, fiyat, derecelendirme, stok ve kategori bulunur. Bir kullanıcı kaydında ad, e-posta, adres ve şirket bilgisi yer alır. Bu yapı sayesinde tablolar, kartlar, detay sayfaları ve filtre bileşenleri için elle fixture yazmanız gerekmez.

DummyJSON HTTPS üzerinden JSON döndürür. Bu nedenle aynı uç noktaları tarayıcıdan, curl ile, frontend uygulamasından veya sunucu tarafı betiklerden çağırabilirsiniz.

DummyJSON uç noktaları nasıl kullanılır?

DummyJSON farklı kaynak koleksiyonları sunar. En sık kullanılan uç noktalar şunlardır:

Uç nokta Kullanım
/products Ürün katalogları, fiyat, stok ve puan verileri
/users Kullanıcı profilleri, adresler, şirket bilgileri
/carts Kullanıcılara bağlı alışveriş sepetleri
/posts Blog tarzı gönderiler
/comments Gönderilere bağlı yorumlar
/todos Görev listeleri
/recipes Tarif içerikleri
/quotes Alıntı verileri

Temel kullanım:

curl https://dummyjson.com/products
Enter fullscreen mode Exit fullscreen mode

Belirli sayıda kayıt almak için limit kullanın:

curl "https://dummyjson.com/products?limit=5"
Enter fullscreen mode Exit fullscreen mode

Sayfalama için limit ve skip parametrelerini birlikte kullanın:

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

Belirli bir ürünü ID ile çekin:

curl https://dummyjson.com/products/1
Enter fullscreen mode Exit fullscreen mode

Arama yapmak için:

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

Yanıttaki alanları sınırlamak için select kullanın:

curl "https://dummyjson.com/products?select=title,price,category"
Enter fullscreen mode Exit fullscreen mode

Yavaş ağ koşullarını test etmek için delay parametresini kullanabilirsiniz. Değer 0 ile 5000 ms arasında olabilir:

curl "https://dummyjson.com/products?delay=2000"
Enter fullscreen mode Exit fullscreen mode

Bu, loading state, skeleton UI veya timeout davranışlarını test etmek için pratiktir.

JavaScript ile DummyJSON’dan veri çekme

Frontend’de en basit kullanım fetch ile yapılır:

async function getProducts() {
  const response = await fetch("https://dummyjson.com/products?limit=5");

  if (!response.ok) {
    throw new Error("Ürünler alınamadı");
  }

  const data = await response.json();
  return data.products;
}

getProducts()
  .then((products) => console.log(products))
  .catch((error) => console.error(error));
Enter fullscreen mode Exit fullscreen mode

React içinde basit bir listeleme örneği:

import { useEffect, useState } from "react";

export default function ProductList() {
  const [products, setProducts] = useState([]);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);

  useEffect(() => {
    fetch("https://dummyjson.com/products?limit=8")
      .then((response) => {
        if (!response.ok) {
          throw new Error("API isteği başarısız oldu");
        }

        return response.json();
      })
      .then((data) => setProducts(data.products))
      .catch((error) => setError(error.message))
      .finally(() => setLoading(false));
  }, []);

  if (loading) return <p>Yükleniyor...</p>;
  if (error) return <p>Hata: {error}</p>;

  return (
    <ul>
      {products.map((product) => (
        <li key={product.id}>
          <strong>{product.title}</strong> - ${product.price}
        </li>
      ))}
    </ul>
  );
}
Enter fullscreen mode Exit fullscreen mode

DummyJSON’da kimlik doğrulama nasıl çalışır?

DummyJSON, oturum açma akışını test etmek için /auth/login uç noktasını sunar. Kullanıcı adı ve şifre gönderirsiniz, API size bearer token döndürür.

curl -X POST https://dummyjson.com/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"emilys","password":"emilyspass"}'
Enter fullscreen mode Exit fullscreen mode

Dönen token’ı korumalı istekte kullanabilirsiniz:

curl https://dummyjson.com/auth/me \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"
Enter fullscreen mode Exit fullscreen mode

JavaScript örneği:

async function login() {
  const response = await fetch("https://dummyjson.com/auth/login", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      username: "emilys",
      password: "emilyspass",
    }),
  });

  if (!response.ok) {
    throw new Error("Giriş başarısız");
  }

  return response.json();
}
Enter fullscreen mode Exit fullscreen mode

Bu akış gerçek bir production auth sistemi değildir; ancak login formu, token saklama ve yetkili istek gönderme davranışlarını prototiplemek için yeterlidir.

Yazma işlemleri: POST, PUT, PATCH ve DELETE

DummyJSON yazma işlemlerini de destekler:

  • POST
  • PUT
  • PATCH
  • DELETE

Örneğin yeni ürün oluşturma isteği:

curl -X POST https://dummyjson.com/products/add \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Test Product",
    "price": 99
  }'
Enter fullscreen mode Exit fullscreen mode

Ürün güncelleme:

curl -X PATCH https://dummyjson.com/products/1 \
  -H "Content-Type: application/json" \
  -d '{
    "price": 129
  }'
Enter fullscreen mode Exit fullscreen mode

Silme:

curl -X DELETE https://dummyjson.com/products/1
Enter fullscreen mode Exit fullscreen mode

Buradaki kritik nokta şudur: Bu işlemler simüle edilir. API, kayıt oluşturulmuş veya güncellenmiş gibi yanıt döndürür; ancak veri kalıcı olarak değişmez. Sayfayı yenilediğinizde veya aynı kaydı tekrar çektiğinizde orijinal veri seti döner.

Bu davranış, paylaşılan ücretsiz bir API için beklenen bir sınırlamadır. DummyJSON’ı yük testi veya production trafiği için değil, prototipleme ve öğrenme için kullanmalısınız.

DummyJSON dışındaki seçenekleri incelemek isterseniz, geliştiriciler için ücretsiz API’ler derlemesi farklı kategorilerdeki servisleri karşılaştırır.

DummyJSON, JSONPlaceholder ve Reqres karşılaştırması

DummyJSON tek ücretsiz sahte REST API değildir. Benzer amaçla sık kullanılan iki alternatif JSONPlaceholder ve Reqres’tir.

Araç En iyi kullanım alanı Kaynaklar Kimlik doğrulama akışı Yazma işlemleri kalıcı mı?
DummyJSON Gerçekçi e-ticaret ve ürün demoları Ürünler, kullanıcılar, sepetler, gönderiler, tarifler Giriş uç noktası + bearer token Hayır
JSONPlaceholder Basit CRUD eğitimleri Gönderiler, yorumlar, kullanıcılar, yapılacaklar, albümler, fotoğraflar Yok Hayır
Reqres Auth ve request/response demo akışları Kullanıcılar, kayıt/giriş taklitleri Sahte kayıt/giriş Hayır

Üçünde de benzer sınırlamalar vardır:

  • Veri modeli sabittir.
  • Yazma işlemleri kalıcı değildir.
  • Yanıt şemasını kendi projenize göre değiştiremezsiniz.
  • Hata senaryolarını sınırlı ölçüde test edebilirsiniz.

JSONPlaceholder arka planda json-server üzerinde çalışır, bu nedenle veri modeli daha genel görünür. DummyJSON ise ürün, sepet ve kullanıcı gibi e-ticaret benzeri veriler istediğinizde daha kullanışlıdır. Reqres ise özellikle login/register ekranları için hızlı demo sağlar.

Resmi kaynakları yer imlerinize ekleyebilirsiniz:

Sabit yer tutucu veriler ne zaman yetmez?

Barındırılan sahte API’ler hızlı başlatır; ancak proje belirginleştiğinde bazı sınırlara çarparsınız.

Aşağıdaki ihtiyaçlar ortaya çıktıysa, DummyJSON yerine kendi mock API’nizi oluşturmanız daha doğru olur:

  • Uygulamanızın kendi alanları var: subscription_tier, feature_flags, billingStatus gibi alanları DummyJSON şemasına ekleyemezsiniz.
  • Yazma işlemlerinin tutarlı davranması gerekiyor: Sepete ürün ekledikten sonra aynı sepeti tekrar okuyabilmeniz gerekebilir.
  • Hata senaryolarını test etmelisiniz: 400, 401, 429, 500 gibi yanıtları kontrollü üretmek isteyebilirsiniz.
  • Frontend ve backend aynı OpenAPI sözleşmesine göre çalışmalı.
  • Yanıt formatı gerçek API’nizle birebir eşleşmeli.
  • Edge case verileri üretmeniz gerekiyor: Boş liste, çok uzun metin, eksik alan, null değer, yüksek fiyat, düşük stok vb.

Bu aşamada başkasının sabit sahte API’sini kullanmak yerine kendi API sözleşmenize bağlı bir mock sunucusu kullanmak daha sürdürülebilir olur.

Apidog ile özel sahte REST API nasıl oluşturulur?

Apidog, API tasarlama, test etme, belgeleme ve mocklama için kullanılan bir API platformudur. DummyJSON’ın sabit veri seti yetmediğinde, kendi uç noktalarınızı ve yanıt şemalarınızı tanımlayıp mock sunucusu üzerinden çağırabilirsiniz.

Temel akış şu şekildedir.

1. Uç noktanızı tanımlayın

Örneğin ürün listesi için şu uç noktayı oluşturun:

GET /products
Enter fullscreen mode Exit fullscreen mode

Yanıt şemasında ihtiyacınız olan alanları belirtin:

{
  "products": [
    {
      "id": 1,
      "title": "Wireless Mouse",
      "price": 29.99,
      "stock": 120,
      "category": "electronics"
    }
  ],
  "total": 1,
  "limit": 10,
  "skip": 0
}
Enter fullscreen mode Exit fullscreen mode

Bunu elle tanımlayabilir veya mevcut OpenAPI/Swagger dosyanızı içe aktarabilirsiniz. Böylece mock API’niz gerçek API sözleşmenizle aynı yapıda olur.

2. Mock veriyi şemadan üretin

Apidog alan adlarını ve veri tiplerini okuyarak uygun mock değerler üretir. Örneğin:

  • email alanı e-posta benzeri değer döndürür.
  • price sayısal değer döndürür.
  • createdAt tarih formatında değer üretir.
  • status enum ise tanımlı değerlerden birini kullanır.

Bu yaklaşım, elle fixture dosyaları yazma ihtiyacını azaltır. Şema odaklı üretim hakkında daha fazla ayrıntı için OpenAPI şemalarından mock veri oluşturma rehberine bakabilirsiniz.

3. Başarı ve hata yanıtlarını ekleyin

Sadece başarılı 200 yanıtını değil, hata senaryolarını da tanımlayın:

GET /products
Enter fullscreen mode Exit fullscreen mode

Olası yanıtlar:

200 OK
400 Bad Request
401 Unauthorized
500 Internal Server Error
Enter fullscreen mode Exit fullscreen mode

Örneğin 500 yanıtı için:

{
  "message": "Ürünler alınırken beklenmeyen bir hata oluştu"
}
Enter fullscreen mode Exit fullscreen mode

Bu sayede frontend tarafında hata ekranı, toast mesajı, retry davranışı ve fallback UI gibi senaryoları kontrollü test edebilirsiniz.

4. Mock sunucusunu çağırın

Apidog size canlı bir mock URL sağlar. Frontend uygulamanızı DummyJSON yerine bu adrese yönlendirebilirsiniz:

curl "https://<your-mock-host>/products?limit=5"
Enter fullscreen mode Exit fullscreen mode

Uygulama tarafında kullanım aynıdır:

const response = await fetch("https://<your-mock-host>/products?limit=5");
const data = await response.json();
Enter fullscreen mode Exit fullscreen mode

Fark şudur: Artık veri modeli, durum kodları ve yanıt formatı sizin kontrolünüzdedir.

Apidog mock API ekranı

Daha çeşitli ve gerçekçi veri üretmek için gerçekçi API test verileri oluşturma yaklaşımı, mock odaklı geliştirme sürecine iyi uyum sağlar.

Ne zaman DummyJSON, ne zaman Apidog?

Hızlı karar vermek için şu ayrımı kullanabilirsiniz:

İhtiyaç Önerilen araç
Hızlı demo veya eğitim DummyJSON
Gerçekçi ürün/kullanıcı verisiyle UI geliştirme DummyJSON
Kendi alanlarınızı ve şemanızı kullanma Apidog
OpenAPI sözleşmesiyle uyumlu mock Apidog
Hata senaryolarını kontrollü test etme Apidog
Frontend ve backend ekiplerinin aynı sözleşmede çalışması Apidog

DummyJSON yapılandırmasız başladığı için çok hızlıdır. Apidog ise gerçek projenizin API sözleşmesine bağlı, kontrol edilebilir ve genişletilebilir mock API gerektiğinde daha uygundur.

Sıkça sorulan sorular

DummyJSON ücretsiz mi?

Evet. DummyJSON ücretsizdir ve API anahtarı gerektirmez. Genel uç noktalarını doğrudan tarayıcıdan, curl ile veya uygulamanızdan çağırabilirsiniz. Production trafiği veya yük testi için değil, prototipleme ve öğrenme için kullanılmalıdır.

DummyJSON oluşturduğum veya güncellediğim verileri kaydeder mi?

Hayır. POST, PUT, PATCH ve DELETE istekleri başarılı görünen yanıtlar döndürür; ancak veriler sunucuda kalıcı olarak değişmez. Bir sonraki okuma isteğinde orijinal veri seti döner.

Kalıcı veya durum bilgisi olan mock davranışına ihtiyacınız varsa, kendi mock API’nizi oluşturmanız gerekir. Mock API’leri kılavuzu, simüle edilmiş ve durum bilgisi olan mocklama arasındaki farkı açıklar.

DummyJSON ile mock sunucusu arasındaki fark nedir?

DummyJSON, herkesin kullandığı sabit ve barındırılan bir veri setidir. Apidog’daki gibi bir mock sunucusu ise sizin API şemanıza göre çalışır, sizin belirlediğiniz alanları ve durum kodlarını döndürür.

Genel demo için DummyJSON yeterlidir. Verinin kendi API’nizle eşleşmesi gerekiyorsa mock sunucusu kullanın.

Gerçekçi yer tutucu veri üretebilir miyim?

Evet. Şema odaklı mock araçları alan adlarını ve veri tiplerini okuyarak daha gerçekçi değerler üretebilir. Örneğin email alanı e-posta, price alanı fiyat, createdAt alanı tarih gibi görünür. Bu, ekiplerin sabit sahte API’lerden kendi mock API’lerine geçmesinin ana nedenlerinden biridir.

Sonuç

DummyJSON, arka uç hazır değilken ürün, kullanıcı ve sepet gibi gerçekçi verilerle hızlı UI geliştirmek için güçlü bir ücretsiz sahte REST API’dir. Kurulum gerektirmez, doğrudan HTTP üzerinden çalışır ve prototipler için yeterince gerçekçi veri sağlar.

Ancak kendi alanlarınıza, kalıcı gibi davranan yazma akışlarına, kontrollü hata yanıtlarına veya OpenAPI sözleşmenizle senkronize bir mock’a ihtiyacınız olduğunda sabit veri seti yetersiz kalır.

Bu noktada kendi özel sahte REST API’nizi oluşturmanız daha doğru olur. Apidog, API şemanızı tanımlamanıza, bu şemadan gerçekçi mock veriler üretmenize ve frontend ile backend ekiplerinin aynı sözleşme üzerinden çalışmasına yardımcı olur.

Top comments (0)