curl, yıllardır var olan ve sayısız kullanım alanına sahip harika bir araçtır. Günümüzde sıkça dosya indirme ve API test etme amacıyla kullanıyorum. Bazen testlerimde farklı HTTP başlıkları (headers) kullanmam gerekiyor. curl ile bir isteğe başlık eklemek için -H bayrağını kullanabilirsiniz. Örneğin: curl -X 'GET' 'https://api.ornek.com/veri' -H 'accept: application/json' -H 'Version: 1'. Bu komut, API'ye iki özel başlık gönderir: accept ve Version. -H parametresi, her başlık için ayrı ayrı kullanılabilir veya tek bir -H içinde birden fazla başlık belirtilebilir.
HTTP başlıkları, istemci ve sunucu arasında ek bilgi taşımak için kullanılır. Örneğin, içerik türü (Content-Type), kimlik doğrulama (Authorization), önbellek kontrolü (Cache-Control) gibi standart başlıklar vardır. curl ile bu başlıkları -H parametresi ile ekleyebilirsiniz. Ayrıca özel başlıklar da (örneğin X-API-Key) gönderebilirsiniz. Bu, özellikle REST API'leri test ederken çok kullanışlıdır.
Pratik bir örnek: Bir NFT koleksiyon API'sine istek atarken zincir kimliğini ve versiyon bilgisini başlık olarak göndermek isteyebilirsiniz. curl -X 'GET' 'https://nft.api.cx.metamask.io/collections?chainId=1' -H 'accept: application/json' -H 'Version: 1' komutu tam olarak bunu yapar. Burada -X 'GET' istek türünü belirtir, URL parametresi ile zincir kimliği verilir ve başlıklarla kabul edilen içerik türü ile API versiyonu belirtilir.
Teknik Analiz
curl ile başlık eklerken dikkat edilmesi gereken bazı noktalar vardır. Başlık değerleri tırnak içine alınmalıdır, aksi halde boşluk veya özel karakterler sorun yaratabilir. Ayrıca, aynı başlık birden fazla kez eklenirse son eklenen geçerli olur. Kimi durumlarda, başlıklar büyük/küçük harf duyarlı olabilir, bu yüzden API dokümantasyonuna uygun yazılmalıdır.
Önemli Gelişmeler
curl'un -H parametresi, aynı zamanda varsayılan başlıkları geçersiz kılmak için de kullanılabilir. Örneğin, User-Agent başlığını değiştirmek isterseniz -H 'User-Agent: MyCustomAgent/1.0' ekleyebilirsiniz. Bu, sunucunun isteği farklı bir istemciden gelmiş gibi algılamasını sağlar. Ayrıca, Authorization başlığı ile token göndermek de yaygındır: -H 'Authorization: Bearer mytoken123'.
Sistem Güvenliği
Sonuç olarak, curl ile HTTP başlıkları eklemek basit ama güçlü bir özelliktir. API testlerinden dosya indirmeye kadar birçok senaryoda işinizi kolaylaştırır. -H parametresini doğru kullanarak isteklerinizi özelleştirebilir ve sunucuyla doğru iletişim kurabilirsiniz. Unutmayın, başlıklar isteğin önemli bir parçasıdır ve yanlış başlık göndermek API yanıtını etkileyebilir.
Kaynak: davidwalsh.name