cURL (Client URL), geliştiricilerin ve sistem yöneticilerinin veri transferi için kullandığı en popüler ve güçlü komut satırı araçlarından biridir. Genellikle “İnternetin İsviçre Çakısı” olarak adlandırılır.
1. cURL Nedir?
cURL, URL (Uniform Resource Locator) sözdizimini kullanarak sunucudan sunucuya veya istemciden sunucuya veri aktarımı sağlayan bir komut satırı aracı ve kütüphanesidir.
- Desteklediği Protokoller: HTTP, HTTPS, FTP, FTPS, SFTP, SCP, SMTP, POP3, IMAP, LDAP ve daha fazlasını destekler.
- Platformlar: Linux, macOS ve Windows (CMD/PowerShell) üzerinde varsayılan olarak gelir veya kolayca kurulabilir.
2. Nerede ve Ne İçin Kullanılır?
cURL genellikle şu senaryolarda kullanılır:
- API Testleri: REST API’lere istek atmak (GET, POST, PUT, DELETE) ve dönen JSON/XML yanıtlarını incelemek.
- Hata Ayıklama (Debugging): Bir web sitesinin HTTP başlıklarını (headers), yönlendirmelerini veya SSL sertifikalarını kontrol etmek.
- Dosya İndirme/Yükleme: Komut satırı üzerinden dosya transferi yapmak.
- Otomasyon: Shell scriptleri içinde web servisleriyle haberleşmek için kullanılır.
3. Temel Kullanım ve Örnekler
En basit haliyle cURL, bir web sayfasının kaynak kodunu (HTML) terminale döker.
curl https://www.google.comAncak cURL’ün gerçek gücü parametrelerinde (flag) saklıdır. İşte en sık kullanılan senaryolar:
A. Dosya İndirme (-o ve -O)
Bir çıktıyı terminale basmak yerine dosyaya kaydetmek için kullanılır
-O (büyük O): Sunucudaki orijinal dosya adını kullanarak kaydeder.
curl -O https://ornek.com/dosya.zip-o (küçük o): Dosya adını siz belirlersiniz.
curl -o yeni_dosya.html https://ornek.com/sayfaB. Yönlendirmeleri Takip Etme (-L)
Bir site sizi başka bir adrese yönlendiriyorsa (örneğin HTTP’den HTTPS’ye veya www eklemeye), cURL varsayılan olarak bunu takip etmez. -L (Location) parametresi yönlendirmeyi izler.
curl -L http://google.comC. Sadece Başlıkları Görme (-I)
Sayfanın içeriğini indirmeden, sunucunun yanıt başlıklarını (Response Headers) görmek için kullanılır. Sunucu türü, önbellek durumu veya çerezler hakkında bilgi verir.
curl -I https://www.github.comD. API İstekleri (GET, POST, PUT, DELETE)
Bir API ile çalışırken en çok kullanılan parametreler şunlardır:
GET İsteği (Varsayılan):
curl https://api.ornek.com/kullanicilarPOST İsteği (-d): Veri göndermek için kullanılır.
curl -X POST -d "isim=Ahmet&yas=30" https://api.ornek.com/kayitJSON Verisi Gönderme (-H ile Başlık Ekleme): Modern API’ler genellikle JSON formatı ister. Bunun için Content-Type başlığını belirtmelisiniz.
curl -X POST https://api.ornek.com/kullanici \ -H "Content-Type: application/json" \ -d '{"isim": "Ahmet", "email": "ahmet@mail.com"}'E. Detaylı Loglama (-v)
İsteğin gidişini, el sıkışmayı (handshake) ve sunucudan gelen ham yanıtı görmek için “verbose” modunu açar. Hata ayıklarken hayat kurtarır.
curl -v https://www.ornek.com4. En Önemli Parametreler (Kısa Liste)
Aşağıdaki tabloyu hızlı bir referans olarak kullanabilirsiniz:
| Parametre | Açıklama | Örnek |
| -X [METOT] | HTTP metodunu belirler (GET, POST, PUT, DELETE). | -X POST |
| -d [VERİ] | POST isteği ile veri (body) gönderir. | -d "id=123" |
| -H [BAŞLIK] | İsteğe özel bir Header (Başlık) ekler. | -H "Authorization: Bearer token" |
| -o [DOSYA] | Çıktıyı belirtilen dosyaya yazar. | -o sonuc.json |
| -L | Sunucu yönlendirmelerini (Redirect 301/302) takip eder. | -L |
| -i | Çıktıda hem HTTP başlıklarını hem de yanıtı gösterir. | -i |
| -u | Kullanıcı adı ve şifre ile yetkilendirme sağlar (Basic Auth). | -u user:password |
| -k | SSL sertifika kontrolünü atlar (Güvenli değildir ama development ortamında işe yarar). | -k |
| -s | “Silent” mod. İlerleme çubuğunu ve hataları gizler. | -s |
5. İleri Seviye Bir Örnek: API’ye Token ile Bağlanma
Diyelim ki bir REST API’ye bağlanıp, güvenli bir “Bearer Token” kullanarak veri çekeceksiniz ve sonucu data.json dosyasına yazdıracaksınız. Komut şöyle olacaktır:
curl -X GET https://api.servis.com/v1/siparisler \
-H "Authorization: Bearer BURAYA_UZUN_TOKEN_GELECEK" \
-H "Accept: application/json" \
-o data.json

