curl Komut Oluşturucu
HTTP metodu, URL, başlıklar, gövde ve kimlik doğrulama seçeneklerinden gerçek, çalışan bir curl komutu oluşturun — doğru kabuk (shell) tırnaklaması otomatik uygulanır — ve tek tıkla kopyalayın.
240 görüntülenme
curl'ün Kısa Tarihi
curl, 1998'de İsveçli geliştirici Daniel Stenberg tarafından yazıldı; ilk sürümünü İsveç'te bir IRC kanalındaki bir bot için döviz kurlarını otomatik olarak çekmek amacıyla geliştirmişti — büyük bir altyapı planı değil, küçük ve kişisel bir ihtiyaçtı. İnsanlar daha fazla protokol ve daha fazla seçenek istemeye devam etti ve bu küçük araç, HTTP, HTTPS, FTP ve zamanla düzinelerce başka protokol üzerinden veri aktarımı yapan genel amaçlı bir komut satırı aracına dönüştü. Stenberg, o günden bu yana neredeyse aracın tüm ömrü boyunca baş geliştiricisi olmaya devam etti; bugün curl varsayılan olarak macOS'te, hemen hemen her Linux dağıtımında ve 2018'den beri Windows 10 ve sonrasında yüklü gelir; dünya genelinde yönlendiricilerden arabalara, oyun konsollarından bir API ile konuşan neredeyse her sürekli entegrasyon (CI) hattına kadar milyarlarca cihazda çalıştığı tahmin edilmektedir. Dar bir kişisel sorunu çözmek için başlayan bu araç, bugün muhtemelen var olan en yaygın dağıtılmış komut satırı HTTP istemcisi ve internetin sessizce en çok bağımlı olduğu açık kaynak yazılımlardan biridir.
Bu Aracın Ürettiği Bayrakları Anlamak
curl varsayılan olarak HTTP yönlendirmelerini (redirect) takip etmez. Bir sunucu 301 veya 302 durum koduyla ve başka bir yeri gösteren bir Location başlığıyla yanıt verirse, sade curl bu yönlendirme yanıtını — ya da boş bir gövdeyi — gösterip durur; bir web tarayıcısının sessizce yaptığı gibi yeni URL'yi otomatik olarak takip etmez. Bu durum ilk kez curl kullananların çoğunu şaşırtır: tarayıcıda kusursuz çalışan bir URL, curl'den görünürde hiçbir sebep yokmuş gibi boş ya da yanlış bir yanıt döndürür — çünkü tarayıcı curl'ün takip etmediği bir yönlendirmeyi takip etmiştir. Çözüm, curl'e yönlendirme zincirini son adresine kadar takip etmesini söyleyen -L (--location) bayrağıdır. O kadar sık ihtiyaç duyulan bir bayraktır ki, birçok geliştirici bilhassa yönlendirme davranışını test etmiyorsa -L'yi varsayılan olarak ekler.
Bir komut boşluk, tırnak veya kabuğa (shell) özel karakterler ($, &, ;, ters tırnak) içeren başlıklar ya da gövde verisi içermeye başladığında, tırnaklama artık kozmetik olmaktan çıkar — çalışan bir komutla, kabuğun curl'e ulaşmadan önce bozduğu bir komut arasındaki farkı belirler. Tırnaksız yazılan Authorization: Bearer abc 123 gibi bir başlık, kabuk tarafından boşluktan bölünür; böylece curl, tek bir parça yerine Authorization: ve Bearer diye iki ayrı, bozuk argüman alır. Tüm değeri tek tırnak içine almak, kabuğa içindeki her şeyi boşluklar dahil olduğu gibi ele almasını söyler — ama tek tırnak, kendi içinde gerçek bir tek tırnak karakteri barındıramaz, çünkü o karakter tırnağı kapatan karakterdir. Bunun standart çözümü, tırnağı kapatıp ters bölü ile kaçırılmış bir tek tırnak ekleyip tırnağı yeniden açmaktır: '\''. Bu araç, eklediği her değere bu kaçış kuralını otomatik olarak uygular; böylece boşluk, tırnak veya başka özel karakterler içeren başlıklar, gövde içeriği ve kimlik doğrulama bilgileri her zaman doğru çalışan bir komut üretir — kaçış kurallarını ezberlemenize gerek kalmaz.
Sıkça Sorulan Sorular
Bazı curl komutları için neden -L bayrağına ihtiyacım var?
curl varsayılan olarak HTTP yönlendirmelerini takip etmez. Çağırdığınız sunucu 301 veya 302 durum koduyla ve bir Location başlığıyla yanıt verirse, sade curl size son içerik yerine bu yönlendirme yanıtını gösterip durur. Tarayıcılar yönlendirmeleri sessizce takip eder; bu yüzden "tarayıcıda çalışan" bir URL curl'den boş veya beklenmedik bir yanıt döndürebilir. -L (--location) eklemek, curl'e yönlendirme zincirini son adrese ulaşana kadar otomatik olarak takip etmesini söyler.
Bir başlıkta boşluk olduğunda curl komutum neden başarısız oluyor?
Komut satırını ayrı argümanlara bölen curl değil, kabuktur (shell) — ve kabuk varsayılan olarak tırnaksız boşluklardan böler. Tırnaksız yazılan Bearer abc123 gibi bir başlık değeri, kabuk tarafından curl'e sanki iki farklı argümanmış gibi verilen iki ayrı kelimeye dönüşür ve başlığı bozar. Değeri tek tırnak içine almak kabuğa "içindeki her şeyi boşluklar dahil tek bir bütün olarak ele al" der; bu araç doldurduğunuz her alan için bunu otomatik olarak yapar.
İstek gövdesi için JSON modu ile Raw modu arasındaki fark nedir?
JSON modu, gövdenizle birlikte otomatik olarak bir Content-Type: application/json başlığı ekler ve sunucuya veriyi JSON olarak ayrıştırmasını söyler — çoğu modern API bu başlığın bulunmasını zorunlu kılar, aksi halde isteği reddeder veya yanlış yorumlar. Raw modu ise yazdığınız metni herhangi bir içerik türü varsaymadan olduğu gibi gönderir; form kodlu veri, düz metin, XML veya Content-Type başlığını başlıklar bölümünden kendiniz elle ayarlamak istediğiniz her durum için doğru seçimdir.
Bearer token kimlik doğrulaması Basic kimlik doğrulamasıyla aynı mı?
Hayır, farklı çalışırlar. Bearer kimlik doğrulaması, genellikle bir OAuth akışı veya API anahtarı sisteminden verilen opak bir erişim token'ı taşıyan Authorization: Bearer <token> başlığı gönderir — sunucu token'ı çözmek yerine bir yerde arar. Basic kimlik doğrulaması ise Authorization: Basic <base64(kullaniciadi:sifre)> gönderir; bu, kullanıcı adınızla şifrenizin birleştirilip base64 ile kodlanmasından ibarettir — kodlama şifreleme değildir, bu yüzden Basic kimlik doğrulaması yalnızca HTTPS üzerinden kullanılmalıdır, asla düz HTTP üzerinden değil; aksi halde bilgiler pratikte açık metin olarak gönderilmiş olur.
curl'ü kim yarattı ve hâlâ aktif olarak geliştiriliyor mu?
curl, 1998'de Daniel Stenberg tarafından, başlangıçta bir IRC botu için döviz kurlarını çekmek amacıyla yaratıldı. Stenberg, aracın neredeyse tüm tarihi boyunca baş geliştiricisi olmaya devam etti ve bugün de aktif olarak geliştirmeyi sürdürüyor. Bir hobi projesinin ötesinde curl, artık dünyada en yaygın dağıtılmış yazılımlardan biri — işletim sistemlerine, gömülü cihazlara ve sayısız uygulamaya paketlenmiş durumda — ve güvenliği ile doğruluğu, büyük bir katkıcı topluluğu tarafından buna uygun bir ciddiyetle ele alınıyor.
Benzer Araçlar
Sorun Bildir
curl Komut Oluşturucu
Yorumlar
Henüz yorum yok — ilk yorumu siz yazın!