Postman ile API geliştirmeyi hızlandırmak
API uçlarını tarayıcı olmadan denemek, koleksiyonlar oluşturmak ve Postman'i iş akışına dahil etmek hakkında öğrendiklerimi paylaşıyorum.
API geliştirirken uzun süre tarayıcının adres çubuğunu kullandım. GET istekleri için yeterliydi, ama POST gönderimi için form hazırlamak ya da curl komutları yazmak can sıkıcıydı. Bir ara basit bir HTML formu bile yazdım yalnızca API’mi test etmek için — gereksizdi.
Postman’i duymuştum ama ciddiye almamıştım. Geçen ay bir projede düzgünce kullanmaya başladım ve iş akışımın bu kadar basit bir araçla bu kadar değişmesine şaşırdım. Bu yazıda öğrendiklerimi aktarıyorum.
Postman nedir?
Postman, HTTP istekleri oluşturmayı, göndermeyi ve yanıtları incelemeyi görsel arayüzle yapmanızı sağlayan bir API istemcisidir. Chrome eklentisi olarak başladı, şimdi bağımsız bir uygulama olarak da çalışıyor. Temel özellikleri ücretsiz.
İlk istek
Arayüzü sezgisel. Üstte HTTP metodunu seçiyorsunuz (GET, POST, PUT, DELETE…), yanına URL yazıyorsunuz, gönder diyorsunuz. Yanıt durum kodu, başlıklar ve gövde ayrı sekmelerde görünüyor.
POST isteği için “Body” sekmesine geçip raw + JSON seçeneğini işaretleyince JSON gövdesi yazılabiliyor:
{
"email": "[email protected]",
"password": "gizli123",
"ad": "Test Kullanıcı"
}
Gönder’e tıklayınca API’nin yanıtını hemen görüyorsunuz. Durum kodu, yanıt süresi, yanıt boyutu — hepsi görünür durumda.
Kimlik doğrulaması gerektiren uçlar
Token tabanlı kimlik doğrulaması için “Headers” sekmesine Authorization başlığını ekliyorum:
Key: Authorization
Value: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Her istekte tekrar yazmak yerine, koleksiyon düzeyinde bu başlığı tanımlamak mümkün — bunu keşfetmek güzel bir zaman kazandırdı.
Koleksiyonlar
Koleksiyon, birbiriyle ilişkili istekleri gruplandırmanın yolu. Proje başına bir koleksiyon oluşturuyorum ve API’nin her ucunu kaydediyorum. “Kaydet” düğmesi, mevcut isteği koleksiyona ekliyor.
Bir projede koleksiyonum şöyle görünüyor:
📁 Ürün Yönetimi API
├── GET Ürün listesi
├── POST Yeni ürün
├── GET Ürün detayı
├── PUT Ürün güncelle
└── DELETE Ürün sil
Bir hafta sonra o API’ye döndüğümde istekleri sıfırdan yazmak zorunda kalmıyorum. Koleksiyonu açıp doğrudan gönderiyorum.
Ortam değişkenleri
Geliştirme ve üretim için farklı URL’ler var: http://localhost:8000 ve https://api.example.com. Bunu her istekte tek tek değiştirmek yerine ortam değişkenlerini kullanıyorum.
“Manage Environments” penceresinde iki ortam oluşturuyorum:
Ortam: Geliştirme
base_url = http://localhost:8000
Ortam: Üretim
base_url = https://api.example.com
İsteklerde URL’yi şöyle yazıyorum:
{{base_url}}/api/urunler
Ortamı değiştirince tüm istekler otomatik olarak doğru URL’yi kullanıyor. Token gibi tekrar eden değerleri de ortam değişkeni olarak tanımlıyorum.
Testler ve örnek yanıtlar
Postman’in “Tests” sekmesinde JavaScript yazarak basit doğrulamalar yapılabiliyor:
// Yanıt 200 OK mu?
pm.test("Durum kodu 200", function () {
pm.response.to.have.status(200);
});
// Yanıt JSON mi?
pm.test("JSON yanıt", function () {
pm.response.to.be.json;
});
// Beklenen alanlar var mı?
pm.test("Data alanı mevcut", function () {
var yanit = pm.response.json();
pm.expect(yanit).to.have.property('data');
});
Bu testleri henüz sürekli çalıştırma (Collection Runner) özelliğiyle denemek istedim ama tam anlamıyla kurmadım. Fikir basit: koleksiyondaki tüm istekleri sırayla çalıştırıp her birinin testini doğrulamak.
İş akışına nasıl dahil ettim
Yeni bir API ucu yazarken şu akışı izliyorum:
- Controller’ı yazıp rotayı tanımla.
- Postman’de isteği oluştur, koleksiyona kaydet.
- İsteği gönder, yanıtı incele.
- Hata varsa düzelt, tekrar gönder.
- Doğru çalışınca ortam değişkenlerini güncelle.
Tarayıcıya ya da curl’e dönmüyorum. Tüm API geliştirme süreci Postman üzerinden ilerliyor.
Başka geliştiricilerle çalışıyorsanız koleksiyonu JSON olarak dışa aktarıp paylaşmak mümkün — bu özelliği henüz aktif olarak kullanmıyorum ama kalabalık ekiplerde işe yarayacağı açık. Şu an tek başıma çalışıyorum ve koleksiyonu yedek olarak kaydetmek bile yeterince değerli.
Postman’e başlangıçta “yalnızca istek gönderiyor” gözüyle baktım. Ama koleksiyonlar, ortam değişkenleri ve testlerle birleşince gerçek bir iş akışı aracına dönüşüyor.