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.
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 ö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
Belirli sayıda kayıt almak için limit kullanın:
curl "https://dummyjson.com/products?limit=5"
Sayfalama için limit ve skip parametrelerini birlikte kullanın:
curl "https://dummyjson.com/products?limit=5&skip=10"
Belirli bir ürünü ID ile çekin:
curl https://dummyjson.com/products/1
Arama yapmak için:
curl "https://dummyjson.com/products/search?q=phone"
Yanıttaki alanları sınırlamak için select kullanın:
curl "https://dummyjson.com/products?select=title,price,category"
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"
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));
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>
);
}
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"}'
Dönen token’ı korumalı istekte kullanabilirsiniz:
curl https://dummyjson.com/auth/me \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"
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();
}
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:
POSTPUTPATCHDELETE
Ö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
}'
Ürün güncelleme:
curl -X PATCH https://dummyjson.com/products/1 \
-H "Content-Type: application/json" \
-d '{
"price": 129
}'
Silme:
curl -X DELETE https://dummyjson.com/products/1
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,billingStatusgibi 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,500gibi 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
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
}
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:
-
emailalanı e-posta benzeri değer döndürür. -
pricesayısal değer döndürür. -
createdAttarih formatında değer üretir. -
statusenum 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
Olası yanıtlar:
200 OK
400 Bad Request
401 Unauthorized
500 Internal Server Error
Örneğin 500 yanıtı için:
{
"message": "Ürünler alınırken beklenmeyen bir hata oluştu"
}
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"
Uygulama tarafında kullanım aynıdır:
const response = await fetch("https://<your-mock-host>/products?limit=5");
const data = await response.json();
Fark şudur: Artık veri modeli, durum kodları ve yanıt formatı sizin kontrolünüzdedir.
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)