ÖZET
Swagger Petstore temel REST prensiplerini ihlal eder: tekil kaynak adlarını tutarsız kullanır, URL'lere eylem fiilleri dahil eder, yanlış HTTP durum kodları döndürür, GET isteklerinde parolaları açığa çıkarır ve meta veri olmadan çıplak diziler döndürür. Modern PetstoreAPI, doğru RESTful tasarım, RFC 9457 hata yönetimi ve üretime hazır kalıplarla tüm bu sorunları düzeltir.
Giriş
On yılı aşkın süredir, Swagger Petstore, OpenAPI öğrenmek için varsayılan örnek olmuştur. Milyonlarca geliştirici onu inceledi, kalıplarını kopyaladı ve tasarımına dayanarak üretim API'leri oluşturdu. Tek bir sorun var: size kötü API'ler oluşturmayı öğretiyor.
Swagger Petstore temel REST prensiplerini ihlal eder, güvenlik açıklarını içerir ve üretim sistemlerine zarar veren anti-kalıpları sergiler. Bu, fren ve gaz pedalları değiştirilmiş bir arabayla araba kullanmayı öğrenmek gibidir—öğrenirsiniz, ama yanlış öğrenirsiniz.
Hasar gerçektir. Swagger Petstore'dan öğrenen geliştiriciler, bu anti-kalıpları üretim kodlarına taşırlar. API'ler tutarsız adlandırma, yanlış HTTP yöntemleri ve güvenlik delikleriyle oluşturulur. Kod incelemeleri bu sorunları gözden kaçırır çünkü "Petstore böyle yapıyor."
Bu kılavuzda, Swagger Petstore'da tam olarak neyin yanlış olduğunu, bu sorunların neden önemli olduğunu ve Modern PetstoreAPI'nin üretime hazır kalıplarla bunları nasıl düzelttiğini öğreneceksiniz. Yan yana karşılaştırmalar görecek, her ihlalin etkisini anlayacak ve API'lerinizi Apidog ile doğru bir şekilde nasıl test edeceğinizi keşfedeceksiniz.
Swagger Petstore'un Eski Sorunu
Swagger Petstore, 2011 yılında Swagger spesifikasyonu (şimdiki OpenAPI) için basit bir örnek olarak oluşturuldu. Amacına hizmet etti: bir OpenAPI spesifikasyonunun nasıl yazılacağını göstermek. Ancak, hiçbir zaman REST API tasarımı için bir referans olması amaçlanmadı.
Neden Fiili Standart Haline Geldi?
Geliştiriciler OpenAPI'yi öğrendiklerinde, resmi örnekle başlarlar. Swagger Petstore bu örnektir. Belgelerde, eğitimlerde ve kod üreteçlerinde bulunur. Swagger UI veya Swagger Codegen kullandıysanız, onu görmüşsünüzdür.
Sorun şu: geliştiriciler "resmi örnek = en iyi uygulama" varsayımıyla hareket ederler. Kalıpları sorgulamadan kopyalarlar. API tasarım kursları onu bir öğretim aracı olarak kullanır. Şirketler, yapısını takip ederek dahili API'ler oluşturur.
Kötü Örneklerin Maliyeti
Kötü örnekler zamanla birikir:
- Genç geliştiriciler anti-kalıpları öğrenir - Bunların hata olduğunu bilmezler
- Kod üreteçleri sorunları sürdürür - Oluşturulan SDK'lar hataları miras alır
- Belgeleme araçları kötü örnekleri gösterir - Swagger UI, Petstore'u varsayılan olarak görüntüler
- Şirketler üretim API'lerini bu şekilde oluşturur - "Swagger için yeterince iyiyse..."
Swagger Petstore muhtemelen tarihteki diğer tüm örneklerden daha fazla API tasarımını etkilemiştir. Bu yüzden kusurları önemlidir.
Swagger Petstore'daki Kritik REST İhlalleri
Swagger Petstore'daki belirli REST ihlallerini ve bunların neden yanlış olduğunu inceleyelim.
1. Tutarsız Kaynak Adlandırması (Çoğul vs. Tekil)
İhlal:
GET /pet/{petId} ← Tekil
GET /store/inventory ← Çoğul
POST /pet ← Tekil
GET /user/{username} ← Tekil
Neden Yanlış:
REST kaynakları koleksiyonları temsil eder. Bir koleksiyon çoğuldur. /pets'e eriştiğinizde, evcil hayvanlar koleksiyonuna erişiyorsunuz demektir. /pets/123'e eriştiğinizde, evcil hayvanlar koleksiyonundaki 123 numaralı öğeye erişiyorsunuz demektir.
Tekil ve çoğul karıştırmak bu zihinsel modeli bozar. /pet/123 evcil hayvan koleksiyonuna mı yoksa tek bir evcil hayvan kaynağına mı erişiyor? Tutarsızlık kafa karışıklığı yaratır.
Modern PetstoreAPI Düzeltmesi:
GET /pets/{petId} ← Her zaman çoğul
GET /stores/inventory ← Tutarlı
POST /pets ← Koleksiyon için çoğul
GET /users/{username} ← Her yerde çoğul
Modern PetstoreAPI, tüm uç noktalarda çoğul kaynak adlarını tutarlı bir şekilde kullanır. Tam uç nokta yapısı için REST API belgelerine göz atın.
2. URL'lerde Eylem Fiilleri
İhlal:
GET /pet/findByStatus?status=available
GET /pet/findByTags?tags=tag1,tag2
GET /user/login?username=john&password=secret
GET /user/logout
Neden Yanlış:
REST URL'leri eylemleri (fiilleri) değil, kaynakları (isimleri) temsil etmelidir. HTTP yöntemi fiildir. GET /pets "evcil hayvanlar kaynağını al" anlamına gelir. findByStatus eklemek gereksizdir—sorgu parametreleri bunun içindir.
URL'lerdeki eylem fiilleri, REST terimleriyle değil, RPC (Uzak Prosedür Çağrısı) terimleriyle düşündüğünüzü gösterir. Kaynaklar yerine uygulama ayrıntılarını açığa çıkarıyorsunuz.
Modern PetstoreAPI Düzeltmesi:
GET /pets?status=AVAILABLE ← Kaynak + filtre
GET /pets?tags=tag1,tag2 ← Filtreleme için sorgu parametreleri
POST /auth/login ← Ayrı kimlik doğrulama kaynağı
POST /auth/logout ← RESTful kimlik doğrulama uç noktaları
Modern PetstoreAPI, filtreleme için sorgu parametrelerini ve ayrı kimlik doğrulama kaynaklarını kullanır. Doğru kimlik doğrulama kalıpları için kimlik doğrulama kılavuzuna bakın.
3. Yanlış HTTP Durum Kodları
İhlal:
POST /pet
Response: 200 OK ← 201 Created olmalıydı
DELETE /pet/{petId}
Response: 200 OK ← 204 No Content olmalıydı
{
"message": "Pet deleted"
}
Neden Yanlış:
HTTP durum kodlarının belirli anlamları vardır:
200 OK"istek başarılı oldu, işte kaynak" anlamına gelir201 Created"kaynak oluşturuldu, işte nerede bulacağınız" anlamına gelir204 No Content"istek başarılı oldu, döndürülecek gövde yok" anlamına gelir
Her şey için 200 kullanmak HTTP semantiğini bozar. İstemciler "kaynak alındı" ile "kaynak oluşturuldu" arasında ayrım yapamaz. DELETE ile bir gövde döndürmek bant genişliğini boşa harcar—istemcinin onay metnine ihtiyacı yoktur.
Modern PetstoreAPI Düzeltmesi:
POST /pets
Response: 201 Created
Location: /pets/019b4132-70aa-764f-b315-e2803d882a24
{
"id": "019b4132-70aa-764f-b315-e2803d882a24",
"name": "Fluffy",
"status": "AVAILABLE"
}
DELETE /pets/{petId}
Response: 204 No Content
(gövdesiz)
Modern PetstoreAPI, doğru HTTP durum kodlarını kullanır ve oluşturulan kaynaklar için Location başlıklarını içerir. Tam eşleme için HTTP durum kodları kılavuzuna bakın.
4. Meta Veri Olmayan Çıplak Diziler
İhlal:
GET /pet/findByStatus?status=available
Response: 200 OK
[
{"id": 1, "name": "Fluffy"},
{"id": 2, "name": "Buddy"}
]
Neden Yanlış:
Çıplak diziler döndürmek sorunlar yaratır:
- Sayfalama meta verisi yok - Toplam kaç öğe var? Hangi sayfadayım?
- Genişletilebilirlik yok - İstemcileri bozmadan meta veri ekleyemezsiniz
- HATEOAS bağlantıları yok - Navigasyon bağlantılarını dahil edemezsiniz
- JSON Ele Geçirme riski - Çıplak diziler belirli saldırılara karşı savunmasızdır
Modern PetstoreAPI Düzeltmesi:
GET /pets?status=AVAILABLE
Response: 200 OK
{
"data": [
{"id": "019b4132-70aa-764f-b315-e2803d882a24", "name": "Fluffy"},
{"id": "019b4127-54d5-76d9-b626-0d4c7bfce5b6", "name": "Buddy"}
],
"pagination": {
"page": 1,
"limit": 20,
"totalItems": 45,
"totalPages": 3
},
"links": {
"self": "/pets?status=AVAILABLE&page=1",
"next": "/pets?status=AVAILABLE&page=2",
"last": "/pets?status=AVAILABLE&page=3"
}
}
Modern PetstoreAPI, tüm koleksiyonları meta veri ve HATEOAS bağlantıları içeren nesnelerle sarar. Uygulama ayrıntıları için sayfalama kılavuzuna bakın.
5. Eksik Hata Standartları
İhlal:
Response: 400 Bad Request
{
"code": 400,
"message": "Invalid input"
}
Neden Yanlış:
Bu hata formatı standart dışıdır ve minimum bilgi sağlar:
- Hata türü tanımlayıcısı yok
- Alan düzeyinde doğrulama hataları yok
- Makine tarafından okunabilir hata kodları yok
- RFC 9457'ye (Problem Detayları) uymuyor
Modern PetstoreAPI Düzeltmesi:
Response: 400 Bad Request
Content-Type: application/problem+json
{
"type": "https://petstoreapi.com/errors/validation-error",
"title": "Validation Error",
"status": 400,
"detail": "Request validation failed",
"instance": "/pets",
"errors": [
{
"field": "name",
"message": "Name is required",
"code": "REQUIRED_FIELD"
},
{
"field": "status",
"message": "Status must be one of: AVAILABLE, PENDING, SOLD",
"code": "INVALID_ENUM"
}
]
}
Modern PetstoreAPI, tüm hatalar için RFC 9457 Problem Detaylarını kullanır. Tam hata formatı için hata işleme kılavuzuna bakın.
Eski Tasarımdaki Güvenlik Felaketleri
REST ihlallerinin ötesinde, Swagger Petstore ciddi güvenlik sorunlarına sahiptir.
Parolalarla GET İsteği
İhlal:
GET /user/login?username=john&password=secret123
Neden Bir Felaket:
GET isteklerindeki parolalar şunlarda görünür:
- Tarayıcı geçmişi - Tarayıcıya erişimi olan herkes parolayı görür
- Sunucu günlükleri - Web sunucuları sorgu parametreleri dahil olmak üzere tam URL'leri günlüğe kaydeder
- Yönlendiren başlıkları - Kullanıcı giriş yaptıktan sonra bir bağlantıya tıklarsa, bir sonraki site parolayı görür
- Proxy günlükleri - Kurumsal proxy'ler tüm URL'leri günlüğe kaydeder
- Tarayıcı yer işaretleri - Kullanıcılar giriş URL'sini yer imlerine ekleyebilir
Bu, kritik bir güvenlik açığıdır. Parolalar asla URL'lerde olmamalıdır.
Modern PetstoreAPI Düzeltmesi:
POST /auth/login
Content-Type: application/json
{
"username": "john",
"password": "secret123"
}
Response: 200 OK
{
"accessToken": "eyJhbGc...",
"refreshToken": "eyJhbGc...",
"expiresIn": 3600
}
Modern PetstoreAPI, JSON gövdeleriyle kimlik doğrulama için POST kullanır. Parolalar asla URL'lerde görünmez. OAuth 2.0 ve JWT kalıpları için kimlik doğrulama kılavuzuna bakın.
Sorgu Parametrelerinde API Anahtarları
İhlal:
GET /pet/123?api_key=abc123secret
Neden Yanlış:
Sorgu parametrelerindeki API anahtarları, URL'lerdeki parolalarla aynı sorunlara sahiptir:
- Her yere günlüğe kaydedilir
- Tarayıcı geçmişinde görünür
- Yönlendiren başlıklarında gönderilir
- Proxy'ler tarafından önbelleğe alınır
Modern PetstoreAPI Düzeltmesi:
GET /pets/019b4132-70aa-764f-b315-e2803d882a24
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Modern PetstoreAPI, API anahtarları ve token'lar için standart Authorization başlıklarını kullanır. Kimlik doğrulama kalıpları için güvenlik kılavuzuna bakın.
Modern PetstoreAPI Bu Sorunları Nasıl Çözüyor?
Modern PetstoreAPI, doğru REST API tasarımını göstermek için sıfırdan inşa edildi. Onu farklı kılan özellikler şunlardır:
Üretime Hazır REST Tasarımı
- Tutarlı çoğul kaynak adları -
/pets,/orders,/users - Kaynak odaklı URL'ler - Eylem fiilleri yok, sadece isimler
- Doğru HTTP durum kodları - Oluşturma için 201, silme için 204, doğru hata kodları
- Koleksiyon sarmalayıcıları - Tüm listeler sayfalama ve meta veri içerir
- RFC 9457 hataları - Alan düzeyinde doğrulama ile standart hata formatı
Modern Standartlar
- OpenAPI 3.2 - Tüm özellikleriyle en son spesifikasyon
- RFC 9457 - HTTP API'leri için Problem Detayları
- IETF Hız Sınırlandırması - Standart
RateLimit-*başlıkları - ISO 8601 - Doğru tarih/saat formatları
- UUIDv7 - Sıralanabilir benzersiz tanımlayıcılar
Çoklu Protokol Desteği
Swagger Petstore'un (sadece REST) aksine, Modern PetstoreAPI şunları destekler:
- REST (OpenAPI 3.2)
- GraphQL
- gRPC
- WebSocket
- Server-Sent Events (SSE)
- MQTT
- Webhooks
- Model Bağlam Protokolü (MCP)
Uygulama ayrıntıları için protokoller kılavuzuna bakın.
Gerçek İş Mantığı
Modern PetstoreAPI gerçekçi özellikler içerir:
- Ödeme işlemleri
- Envanter yönetimi
- Sipariş gönderimi
- Webhook bildirimleri
- Yapay zeka destekli evcil hayvan önerileri
- Görsel yükleme ve işleme
Tam özellik seti için API belgelerine bakın.
Apidog ile REST API Tasarımını Test Etme
Apidog, REST API tasarımını doğrulamanıza ve üretim aşamasına gelmeden ihlalleri yakalamanıza yardımcı olur.
OpenAPI Spesifikasyonlarını İçe Aktarma ve Doğrulama
# Modern PetstoreAPI spesifikasyonunu içe aktar
1. Apidog'u açın
2. "İçe Aktar" → "OpenAPI" üzerine tıklayın
3. Şunu girin: https://petstoreapi.com/openapi.json
4. Apidog spesifikasyonu doğrular ve test senaryoları oluşturur
Apidog otomatik olarak şunları tespit eder:
- Tutarsız kaynak adlandırması
- Eksik HTTP durum kodları
- Geçersiz yanıt yapıları
- Kimlik doğrulamadaki güvenlik sorunları
REST Prensiplerini Test Etme
REST uyumluluğunu doğrulayan test senaryoları oluşturun:
Test: Kaynak Adları Çoğuldur
// Apidog test betiği
pm.test("Uç nokta çoğul kaynak adı kullanır", function() {
const url = pm.request.url.toString();
pm.expect(url).to.match(/\/pets\/|\/orders\/|\/users\//);
pm.expect(url).to.not.match(/\/pet\/|\/order\/|\/user\//);
});
Test: Doğru Durum Kodları
pm.test("POST 201 Created döndürür", function() {
if (pm.request.method === "POST") {
pm.response.to.have.status(201);
pm.response.to.have.header("Location");
}
});
pm.test("DELETE 204 No Content döndürür", function() {
if (pm.request.method === "DELETE") {
pm.response.to.have.status(204);
pm.expect(pm.response.text()).to.be.empty;
}
});
Test: Koleksiyonlarda Meta Veri Bulunur
pm.test("Koleksiyon yanıtı sayfalama içerir", function() {
const response = pm.response.json();
pm.expect(response).to.have.property("data");
pm.expect(response).to.have.property("pagination");
pm.expect(response.pagination).to.have.property("page");
pm.expect(response.pagination).to.have.property("totalItems");
});
Eski ve Yeni Petstore'u Karşılaştırın
Her iki spesifikasyonu Apidog'a aktarın ve yan yana karşılaştırmalar yapın:
- Swagger Petstore'u içe aktarın:
https://petstore.swagger.io/v2/swagger.json - Modern PetstoreAPI'yi içe aktarın:
https://petstoreapi.com/openapi.json - Her ikisi üzerinde otomatik testler çalıştırın
- Farklılıkları görmek için sonuçları karşılaştırın
Apidog, Swagger Petstore'daki tasarım ihlallerini vurgulayacak ve Modern PetstoreAPI'nin bunları nasıl düzelttiğini gösterecektir.
Geçiş Kılavuzu: Eski Petstore'dan Modern Tasarıma
Swagger Petstore'a dayalı bir API oluşturduysanız, doğru REST tasarımına nasıl geçeceğiniz aşağıda açıklanmıştır:
Adım 1: Kaynak Adlarını Düzeltin
Önce:
GET /pet/{petId}
POST /pet
DELETE /pet/{petId}
Sonra:
GET /pets/{petId}
POST /pets
DELETE /pets/{petId}
Geçiş Stratejisi:
- Geçiş sırasında her iki uç noktayı da destekleyin
- Eski uç noktalara kullanımdan kaldırma uyarıları ekleyin
- Belgeleri yeni uç noktaları gösterecek şekilde güncelleyin
- Kullanımı izleyin ve 6 ay sonra eski uç noktaları kaldırın
Adım 2: Eylem Fiillerini Kaldırın
Önce:
GET /pet/findByStatus?status=available
GET /pet/findByTags?tags=tag1,tag2
Sonra:
GET /pets?status=AVAILABLE
GET /pets?tags=tag1,tag2
Geçiş Stratejisi:
- Eski uç noktaları 301 Moved Permanently ile yenilerine yönlendirin
- İstemci SDK'larını yeni uç noktaları kullanacak şekilde güncelleyin
- Sorgu parametre doğrulamasını ekleyin
Adım 3: HTTP Durum Kodlarını Düzeltin
Önce:
POST /pet → 200 OK
DELETE /pet/{petId} → 200 OK gövde ile
Sonra:
POST /pets → 201 Created Location başlığı ile
DELETE /pets/{petId} → 204 No Content (gövdesiz)
Geçiş Stratejisi:
- Bu, durum kodlarını kontrol eden istemciler için bozucu bir değişikliktir
- API'nizi (v2) doğru durum kodlarıyla sürümleyin
- Değişiklikleri açıkça belgeleyin
- Geçiş zaman çizelgesi sağlayın
Adım 4: Koleksiyonları Sarmalayın
Önce:
[
{"id": 1, "name": "Fluffy"},
{"id": 2, "name": "Buddy"}
]
Sonra:
{
"data": [...],
"pagination": {...},
"links": {...}
}
Geçiş Stratejisi:
- Bu bozucu bir değişikliktir
- Sarmalanmış yanıtlarla v2 uç noktaları oluşturun
- v1 uç noktalarını kullanımdan kaldırın
- İstemci kodunu yeni yapıyı işlemek için güncelleyin
Adım 5: RFC 9457 Hatalarını Uygulayın
Önce:
{
"code": 400,
"message": "Invalid input"
}
Sonra:
{
"type": "https://petstoreapi.com/errors/validation-error",
"title": "Validation Error",
"status": 400,
"detail": "Request validation failed",
"errors": [...]
}
Geçiş Stratejisi:
Content-Type: application/problem+jsonbaşlığını ekleyin- Geçiş sırasında hem eski hem de yeni hata formatlarını dahil edin
- İstemci hata işleme sürecini güncelleyin
- Geçiş süresinin ardından eski formatı kaldırın
Kötü API Tasarımının Gerçek Dünya Etkisi
Kötü API tasarımının gerçek maliyetleri vardır:
Geliştirici Kafa Karışıklığı
API'ler REST prensiplerini ihlal ettiğinde, geliştiriciler zaman kaybeder:
- Hangi HTTP yöntemini kullanacaklarını tahmin etme
- Tutarsız adlandırma kalıplarını çözme
- Beklenmedik durum kodlarının hatalarını ayıklama
- Uygun yapısı olmayan hataları işleme
Maliyet: Her entegrasyon için saatlerce geliştirici zamanı
İstemci Hataları
Tutarsız API'ler istemci tarafı hatalarına yol açar:
- Beklenmedik yanıt yapılarından ayrıştırma hataları
- Yanlış HTTP yöntemlerinden kimlik doğrulama hataları
- Eksik meta verilerden sayfalama sorunları
- Standart dışı formatlardan hata işleme hataları
Maliyet: Üretim olayları ve müşteri etkisi
Güvenlik Açıkları
Tasarım kusurları güvenlik riskleri yaratır:
- URL'lerdeki parolalar günlüğe kaydedilir
- Sorgu parametrelerindeki API anahtarları önbelleğe alınır
- Hassas uç noktalarda eksik kimlik doğrulama
- Uygun olmayan hata mesajları sistem bilgilerini sızdırır
Maliyet: Veri ihlalleri ve uyumluluk ihlalleri
Teknik Borç
Kötü örnekler zamanla birikir:
- Yeni geliştiriciler anti-kalıpları öğrenir
- Kod üreteçleri hatalı SDK'lar üretir
- Belgeler yanlış örnekleri gösterir
- Şirketler yeni API'leri aynı hatalarla oluşturur
Maliyet: Uzun vadeli bakım yükü
Sonuç
Swagger Petstore, basit bir OpenAPI örneği olarak amacına hizmet etti, ancak artık ilerleme zamanı geldi. REST ihlalleri, güvenlik sorunları ve anti-kalıpları çok sayıda üretim API'sini etkiledi.
Modern PetstoreAPI, sektörün ihtiyaç duyduğu referans uygulamayı sunar: doğru REST tasarımı, modern standartlar, çok protokollü destek ve üretime hazır kalıplar. API tasarımı için öğrenme kaynağınız ve referansınız olarak kullanın.
API'lerinizi Apidog ile test ederek tasarım ihlallerini erken yakalayın. OpenAPI spesifikasyonlarınızı içe aktarın, otomatik testler çalıştırın ve API'lerinizin üretime geçmeden önce REST prensiplerine uygun olduğundan emin olun.
Sonraki Adımlar:
- Modern PetstoreAPI belgelerini keşfedin
- API tasarımınızı Modern PetstoreAPI kalıplarıyla karşılaştırın
- OpenAPI spesifikasyonunuzu doğrulama için Apidog'a aktarın
- Yukarıdaki geçiş kılavuzunu kullanarak REST ihlallerini düzeltin
- Hata yönetimi için RFC 9457'yi benimseyin
Kötü API örnekleri dönemi sona erdi. Modern PetstoreAPI ile API'leri doğru şekilde oluşturun.
Sıkça Sorulan Sorular
Swagger neden kötü bir örnek oluşturdu?
Swagger Petstore, 2011 yılında Swagger spesifikasyonunun basit bir gösterimi olarak oluşturuldu. Bir REST API tasarım referansı olması amaçlanmamıştı. Sorun şu ki, fiili standart örnek haline geldi ve kusurları milyonlarca geliştirici tarafından kopyalandı.
Swagger Petstore'u kullanmayı bırakmalı mıyım?
Evet, REST API tasarımını öğrenmek için. Bunun yerine Modern PetstoreAPI'yi kullanın. Doğru REST prensiplerini, modern standartları ve üretime hazır kalıpları gösterir. Eski Petstore, üretim sistemlerine zarar veren anti-kalıpları öğretir.
Modern PetstoreAPI üretime hazır mı?
Evet. Modern PetstoreAPI, gerçekçi iş mantığı, doğru hata işleme, kimlik doğrulama, hız sınırlama ve güvenlik özellikleri içerir. Minimum değişikliklerle dağıtabilir veya kendi API tasarımınız için referans olarak kullanabilirsiniz.
API'min REST prensiplerine uyduğunu nasıl test ederim?
OpenAPI spesifikasyonunuzu Apidog'a aktarın ve otomatik testler çalıştırın. Apidog, kaynak adlandırmayı, HTTP durum kodlarını, yanıt yapılarını ve güvenlik kalıplarını doğrular. API'nizi Modern PetstoreAPI ile yan yana da karşılaştırabilirsiniz.
Swagger Petstore'daki en büyük hata nedir?
Sorgu parametrelerinde parolalarla GET /user/login kullanılması. Bu, parolaları tarayıcı geçmişinde, sunucu günlüklerinde ve yönlendiren başlıklarında açığa çıkarır—kritik bir güvenlik açığıdır. Kimlik doğrulama için her zaman JSON gövdeleriyle POST kullanın.
Swagger Petstore kalıplarından kademeli olarak geçiş yapabilir miyim?
Evet. Geçiş süresince hem eski hem de yeni uç noktaları destekleyin. Eski uç noktalara kullanımdan kaldırma uyarıları ekleyin, belgeleri güncelleyin ve kullanımı izleyin. İstemciler geçiş yaptıktan sonra (genellikle 6-12 ay) eski uç noktaları kaldırın.
Modern PetstoreAPI GraphQL ve gRPC'yi destekliyor mu?
Evet. Swagger Petstore'un (sadece REST) aksine, Modern PetstoreAPI birden fazla protokolü destekler: REST, GraphQL, gRPC, WebSocket, SSE, MQTT, Webhooks ve MCP. Ayrıntılar için protokoller kılavuzuna bakın.
Ekibimi API tasarımımızı düzeltmeye nasıl ikna ederim?
Onlara gerçek maliyetleri gösterin: geliştirici kafa karışıklığı, istemci hataları, güvenlik açıkları ve teknik borç. Mevcut API'nizdeki ihlalleri göstermek için Apidog'u kullanın. Tasarımınızı Modern PetstoreAPI ile karşılaştırın ve iyileştirmeleri gösterin.
