`libcurl` kütüphanesi
(everything.curl.dev)--libcurl kullanımı
libcurlkullanımı önerilir: Kullanıcıların önce curl komut satırı aracını kullanarak istedikleri aktarımı denemeleri, kabaca istedikleri gibi çalıştığında ise komut satırına--libcurl [dosya_adı]seçeneğini ekleyerek yeniden çalıştırmaları önerilir.- Kod üretimi:
--libcurlkomut satırı seçeneği, verilen dosya adıyla bir C programı üretir. Bu C programı, curl komut satırı aracının gerçekleştirdiği aktarımı yürütmek içinlibcurlkullanır. - İstisnalar ve farklar: Her zaman %100 aynı sonucu vermese de, kullanmak isteyeceğiniz
libcurlseçenekleri ve ek argümanlar için mükemmel bir ilham kaynağı olabilir.
Örnek kod
- Çalıştırma örneği:
curl http://example.com --libcurl example.ckomutu çalıştırıldığında, mevcut dizindeexample.cdosyası oluşturulur. - Üretilen kod: Üretilen kod,
curl_easy_setopt()kullanılarak yapılan çeşitli seçenek ayarlarını içerir; bazı seçenekler kaynaktan kolayca üretilemediği için bunları kullanıcının kendisi uygulaması gerekebilir ya da hiç kullanmayabilir.
GN⁺ görüşü
libcurl'ün faydası: Bu özellik, geliştiricilerin komut satırında çalışan curl komutlarını kolayca C programlarına dönüştürmesini sağlayaraklibcurlkullanan uygulamaların geliştirilmesini hızlandırır.- Kod üretiminin avantajı: Otomatik üretilen kod, geliştiricilerin
libcurlAPI'sini daha hızlı anlamasına ve uygulamasına yardımcı olabilir. - Öğrenme aracı olarak değeri: Başlangıç seviyesindeki yazılım mühendislerine
libcurlseçeneklerini ve ağ programlamasının gerçek uygulama örneklerini gösteren iyi bir öğrenme kaynağı olabilir.
1 yorum
Hacker News yorumları
Tarayıcı geliştirici araçlarının Network sekmesinde istediğiniz isteği bulup “copy as curl” ile kopyaladıktan sonra, https://curlconverter.com/ gibi bir araçla kullandığınız dildeki istek koduna dönüştürme kalıbı çok iyi.
Bir bakıma curl, her yere çevrilebilen bir ara temsil gibi kullanılıyor.
curl_translateişleviyle “copy as curl” komutunu istek koduna dönüştürebilir.https://httr2.r-lib.org/reference/curl_translate.html
Tarayıcının “copy as curl” özelliği kimlik doğrulama ve encoding header’ları kesin çalışır hâlde aldığı için, çok satırlı bir curl komutunu elle kurcalamaktan çok daha kullanışlı.
İstek parametrelerini değiştirip yerel instance’a gönderebilir, çıktıyı biçimlendirmek için
jq’a pipe edebilirsiniz.O kadar yaygın kullanılıyor ki istekleri cURL olarak dışa aktaran araçlar da, cURL’ü içe alan araçlar da ortaya çıktı.
Komut satırı arayüzünde, mevcut komutla aynı işi yapan program kaynak kodunu üreten bir flag olması oldukça harika.
Kaputu açıp içeride neler olduğunu gösteriyor gibi; yalnızca davranışı daha iyi anlamayı sağlamakla kalmıyor, ihtiyaca göre değiştirmeyi veya genişletmeyi de kolaylaştırıyor.
libcurlkullanırken range request gibi bir şeye ihtiyaç duyduysanız ya da tarayıcı Network sekmesinde “copy as curl” yaptıysanız, komut satırında çalıştırıp sadece--libcurlekleyerek bunu C kütüphanesiyle tam olarak nasıl yapacağınızı görebilirsiniz.Bu yaklaşım, Microsoft Office’in Visual Basic makrolarının başarılı olmasının nedenlerinden biriydi.
Word veya Excel’de bir işlem yapıp oluşturulan makroya bakabiliyor, ardından kodu ihtiyacınıza göre düzeltebiliyordunuz. Basit ama güçlü bir kavram; curl’de de görmek sevindirici.
Uzun süredir güncellenmemiş gibi görünüyor: https://github.com/dotnet/Open-XML-SDK/releases/tag/v2.5
Amiga’nın AREXX’i de akla geliyor.
Derlemek için
gcc’ye-lcurlekleyerek libcurl linkleme işlemini belirtmek gerekiyor.Örneğin
curl https://ifconfig.me --libcurl ip_fetcher.cile IP adresini veip_fetcher.cdosyasını oluşturup,gcc -o ip_fetcher ip_fetcher.c -lcurlile derledikten sonra./ip_fetcherçalıştırılırsa IP adresi yazdırılır.Her gün C kodu yazmayan biri için bu temel linkleme adımı da yararlı bir bilgi.
cckomutu yazmak yerinemakedaha rahat geliyorsa daha kolay bir yol da var.curl https://ifconfig.me --libcurl ip_fetcher.csonrasındamake LDFLAGS=-lcurl ip_fetcher, ardından./ip_fetcherçalıştırılabilir.Biraz tanıtım yapmak gerekirse, Hurl libcurl kullanarak düz metinle HTTP istekleri çalıştıran ve test eden açık kaynaklı bir CLI.
libcurl’ün yüksek güvenilirliğini ve HTTP/3 gibi özelliklerini kullanırken, istekleri zincirleme, yanıttan veri yakalayıp sonraki isteğe aktarma, JSONPath ve XPath gibi yanıt test özellikleri ekliyor.
REST/SOAP/GraphQL API istekleri için söz dizimi kolaylıkları da var ama özünde sadece libcurl; verbose seçeneğiyle curl komutlarını da grep’leyebilirsiniz. Yönetici olarak katkı veriyorum.
https://hurl.dev
Böyle bir özellik ffmpeg için de mümkün olsa güzel olurdu.
Daniel Stenberg ayrıntılara ve geliştirici/kullanıcı deneyimine gerçekten çok özen gösteriyor.
Bu düzeyde incelik şaşırtıcı.
Daniel Stenberg’in curl komut satırı seçeneklerinin çoğunu gözden geçirdiği 3 saatlik videoda bu seçenekten bahsettiğini hatırlıyorum.
https://www.youtube.com/watch?v=V5vZWHP-RqU
Gönderi başlığı tam genişlikte tire ve kısa çizgi kombinasyonu (
—-) değil, iki tire (--) olmalı.Bu seçenek, özgün curl çağrısını saran script’in yerini alabilecek derlenebilir bir C programı oluşturduğu anlamına mı geliyor?
libcurlile bu zaten mümkündü ama şimdiye kadar boilerplate kodu elle yazmak gerekiyordu.Bunu, dokümanlarda saatlerce arama yapmaktan kurtaran bir başlangıç noktası olarak görmek daha doğru.