REST API Test Etme Araçları
API çalışıyor mu? Tarayıcıda adres çubuğuna yapıştırmak yetmez. POST isteği gönderemezsin, header ekleyemezsin, token taşıyamazsın. İşte bu yüzden ayrı bir test aracına ihtiyacın var.
Üç araç yeter: Postman, Insomnia ve curl. İlk ikisi arayüzlü, üçüncüsü terminalden. Hepsini aynı gün öğrenebilirsin. Aşağıda sıfırdan çalışan bir düzen kuruyoruz.
Arayüzlü Araçlar: Postman ve Insomnia
Görsel araçların avantajı net: isteği gözünle görürsün, yanıtı biçimlendirilmiş halde okursun. Yeni bir API'yi keşfederken en hızlı yol budur.
Postman ile ilk isteğin
Kurulumdan sonra sırayla ilerle:
- New > HTTP Request ile boş bir sekme aç.
- Metodu seç: GET, POST, PUT, PATCH, DELETE.
- URL'yi yaz. Örneğin https://api.ornek.com/v1/users.
- Params sekmesinden query parametrelerini ekle. Postman bunları URL'ye kendisi yazar.
- Headers sekmesine Content-Type: application/json ekle.
- Body sekmesinde raw ve JSON seç, gövdeyi yapıştır.
- Send'e bas.
Yanıt panelinde üç şeye bak: durum kodu, süre ve gövde. 200 iyi, 201 kaynak oluşturuldu, 400 senin isteğin bozuk, 401 kimlik yok, 403 yetki yok, 404 yol yanlış, 500 sunucu patladı. Bu ayrım hata ayıklamanın yarısıdır.
Ortam değişkenleri ve koleksiyonlar
Aynı URL'yi yirmi yere yazma. Postman'de Environment oluştur ve şu değişkenleri tanımla:
- base_url → yerel için http://localhost:3000, canlı için gerçek adres
- token → oturum jetonu
- user_id → test kullanıcısı
Sonra istekte {{base_url}}/users/{{user_id}} yaz. Ortamı değiştirdiğinde bütün koleksiyon canlıya döner. Geliştirme, staging ve production için üç ayrı ortam tut.
Koleksiyonlar da klasör mantığıyla çalışır. "Auth", "Users", "Orders" diye ayır. Koleksiyon düzeyinde Authorization tanımlarsan her istek onu miras alır; tek tek header yazmazsın.
Tests sekmesi işi otomatiğe bağlar. Login isteğinin ardından dönen jetonu değişkene yazabilirsin. Böylece sonraki istekler kendiliğinden yetkili olur. Küçük bir kontrol de ekle: durum kodu 200 mü, yanıtta id alanı var mı.
Gerçek anahtarları ortam dosyasına yazıp paylaşma. Postman ortamları dışa aktarılırken değerler de gider. Sırların nasıl saklanacağı konusu, güvenli şifre saklama yöntemlerini anlatan rehberdeki mantıkla aynı.
Insomnia: daha hafif bir alternatif
Insomnia daha sade. Hesap açmadan kullanabilirsin, arayüz daha az kalabalık. GraphQL sorguları için otomatik şema tamamlaması güzel çalışır. Ortam değişkenleri JSON olarak düzenlenir; elle yazmayı sevenler için pratik.
| Kriter | Postman | Insomnia | curl |
|---|---|---|---|
| Öğrenme süresi | Orta | Kısa | Kısa |
| Takım paylaşımı | Güçlü | Orta | Dosyayla |
| Otomasyon | Newman ile | Sınırlı | Tam |
| Kaynak tüketimi | Yüksek | Düşük | Yok denecek kadar |
Terminalden Test: curl ve Otomasyon
Sunucuda arayüz yoktur. SSH ile bağlandığın makinede tek seçeneğin curl olur. Linux terminaliyle arası iyi olan biri için bu araç zaten tanıdıktır.
Temel curl kalıpları
- GET: curl https://api.ornek.com/users
- Header ile: curl -H "Authorization: Bearer $TOKEN" https://api.ornek.com/me
- POST JSON: curl -X POST -H "Content-Type: application/json" -d '{"ad":"Ada"}' https://api.ornek.com/users
- Dosyadan gövde: -d @body.json
- Dosya yükleme: -F "[email protected]"
Yanıt tek satır JSON olarak gelir ve okunmaz. jq kurup çıktıyı ona borula: | jq . Renkli ve girintili görürsün. Belirli bir alanı çekmek için | jq '.data[0].email' yeter.
Hata ayıklama bayrakları
Sorun çıktığında bu üç bayrak zaman kazandırır:
- -i yanıt başlıklarını da gösterir. Rate limit ve cache bilgileri oradadır.
- -v el sıkışmayı, gönderilen başlıkları, TLS ayrıntısını döker.
- -w "\n%{http_code} %{time_total}s\n" durum kodunu ve süreyi yazdırır.
- -L yönlendirmeleri takip eder. 301 alıp şaşırmayı önler.
Postman'de kurduğun bir isteği curl'e çevirmek de mümkün: istek panelindeki kod üretme seçeneğinden cURL'ü seç, kopyala. Tersi de olur; curl komutunu Postman'e yapıştırdığında araç onu ay