लाइब्रेरी 'libcurl'
(everything.curl.dev)--libcurl का उपयोग
- libcurl के उपयोग की सिफारिश: उपयोगकर्ताओं को पहले
curlकमांड-लाइन टूल का उपयोग करके मनचाहा ट्रांसफर आज़माने की सलाह दी जाती है, और जब वह लगभग इच्छित रूप से काम करने लगे, तब कमांड-लाइन में--libcurl [फ़ाइलनाम]विकल्प जोड़कर उसे फिर से चलाएँ। - कोड जनरेशन:
--libcurlकमांड-लाइन विकल्प दिए गए फ़ाइलनाम के साथ एक C प्रोग्राम बनाता है। यह C प्रोग्राम libcurl का उपयोग करके वही ट्रांसफर चलाता है जोcurlकमांड-लाइन टूल ने किया था। - अपवाद और अंतर: यह हमेशा 100% एक जैसा नहीं होता, लेकिन जिन libcurl विकल्पों और अतिरिक्त arguments का आप उपयोग करना चाहते हैं, उनके लिए यह बेहतरीन प्रेरणा दे सकता है।
उदाहरण कोड
- चलाने का उदाहरण:
curl http://example.com --libcurl example.cकमांड चलाने पर मौजूदा डायरेक्टरी मेंexample.cफ़ाइल बन जाती है। - जेनरेट किया गया कोड: बने हुए कोड में
curl_easy_setopt()का उपयोग करके कई तरह की option settings शामिल होती हैं, और कुछ options ऐसे हो सकते हैं जिन्हें source से आसानी से जनरेट नहीं किया जा सकता, इसलिए उपयोगकर्ता को उन्हें खुद लागू करना पड़ सकता है या उनका उपयोग न करना पड़े।
GN⁺ की राय
- libcurl की उपयोगिता: यह फीचर डेवलपर्स को कमांड-लाइन पर काम करने वाले
curlकमांड को आसानी से C प्रोग्राम में बदलने में मदद करता है, जिससे libcurl का उपयोग करने वाले applications का विकास तेज़ होता है। - कोड जनरेशन के फ़ायदे: अपने-आप जेनरेट किया गया कोड डेवलपर्स को libcurl API को अधिक तेज़ी से समझने और लागू करने में मदद कर सकता है।
- सीखने के टूल के रूप में मूल्य: शुरुआती software engineers के लिए यह libcurl options और network programming के वास्तविक उपयोग के उदाहरण दिखाने वाला अच्छा learning material हो सकता है।
1 टिप्पणियां
Hacker News की राय
ब्राउज़र developer tools के network tab में मनचाहा request ढूँढकर उसे “copy as curl” से कॉपी करना, फिर https://curlconverter.com/ जैसे टूल से उसे अपनी इस्तेमाल की भाषा के request code में बदलना, एक बहुत अच्छा पैटर्न है
एक तरह से curl को हर जगह अनुवाद किए जा सकने वाले intermediate representation की तरह इस्तेमाल किया जाता है
httrके हाल में दोबारा लिखे गए httr2 पैकेज कीcurl_translateफ़ंक्शन से “copy as curl” कमांड को request code में बदल सकते हैंhttps://httr2.r-lib.org/reference/curl_translate.html
ब्राउज़र का “copy as curl” authentication और encoding headers के सही काम करने वाली स्थिति को वैसे का वैसा ले आता है, इसलिए खुद से multi-line curl command से छेड़छाड़ करने से यह कहीं ज़्यादा सुविधाजनक है
request parameters बदलकर उसे local instance पर भेज सकते हैं, या
jqमें pipe करके output format को सँवार सकते हैंयह इतना व्यापक है कि request को cURL में export करने वाले टूल भी हैं, और cURL को import करने वाले टूल भी
यह काफ़ी शानदार है कि command-line interface में ऐसा flag है जो मौजूदा command जैसा ही काम करने वाला program source code उगल देता है
यह जैसे bonnet खोलकर अंदर क्या हो रहा है दिखा देता है; इससे न सिर्फ़ कामकाज बेहतर समझ में आता है, बल्कि अपनी ज़रूरत के मुताबिक उसे बदलना या बढ़ाना भी आसान हो जाता है
अगर आप
libcurlइस्तेमाल कर रहे हों और आपको range request जैसी किसी चीज़ की ज़रूरत पड़ जाए, या आपने ब्राउज़र network tab में “copy as curl” किया हो, तो command line पर उसे चलाकर सिर्फ़--libcurlजोड़ दें और आपको ठीक-ठीक पता चल जाएगा कि C library में यह कैसे करना हैयह तरीका Microsoft Office के Visual Basic macro के सफल होने की एक वजह था
आप Word या Excel में कोई काम करते थे, फिर बने हुए macro को देखते थे, और कोड को अपनी ज़रूरत के हिसाब से बदल सकते थे। यह सरल लेकिन शक्तिशाली विचार है, इसलिए इसे curl में देखना अच्छा लगता है
लगता है इसे काफ़ी समय से अपडेट नहीं किया गया: https://github.com/dotnet/Open-XML-SDK/releases/tag/v2.5
Amiga का AREXX भी याद आता है
compile करने के लिए
gccमें-lcurlजोड़कर libcurl linking बतानी पड़ती हैउदाहरण के लिए,
curl https://ifconfig.me --libcurl ip_fetcher.cसे IP address औरip_fetcher.cबना लें, फिरgcc -o ip_fetcher ip_fetcher.c -lcurlसे compile करें, और./ip_fetcherचलाएँ तो IP address प्रिंट हो जाएगाजो लोग रोज़ C code नहीं लिखते, उनके लिए linking का यह बुनियादी कदम भी उपयोगी जानकारी है
cccommand टाइप करने सेmakeज़्यादा आसान लगे, तो इससे भी सरल तरीका हैcurl https://ifconfig.me --libcurl ip_fetcher.cके बादmake LDFLAGS=-lcurl ip_fetcher, फिर./ip_fetcherचलाएँथोड़ी self-promotion करूँ तो Hurl, libcurl का इस्तेमाल करने वाला एक open source CLI है, जो plain text में HTTP request चलाने और test करने देता है
यह libcurl की ऊँची reliability और HTTP/3 जैसी सुविधाएँ इस्तेमाल करता है, और साथ में request chaining, response से data capture करके अगली request में पास करना, तथा JSONPath·XPath जैसे response test features भी जोड़ता है
REST/SOAP/GraphQL API requests के लिए कुछ syntax sugar भी है, लेकिन मूल में यह बस libcurl ही है, और verbose option इस्तेमाल करें तो curl command को grep भी कर सकते हैं। मैं इसके maintainers में से एक हूँ
https://hurl.dev
अच्छा होगा अगर ऐसी सुविधा ffmpeg में भी हो
Daniel Stenberg details और developer·user experience दोनों का सच में बहुत बारीकी से ध्यान रखते हैं
इस स्तर की polish काफ़ी हैरतअंगेज़ है
याद है कि Daniel Stenberg ने खुद curl command-line options के ज़्यादातर हिस्सों पर एक 3 घंटे के वीडियो में इस option का ज़िक्र किया था
https://www.youtube.com/watch?v=V5vZWHP-RqU
submission title में full-width dash और hyphen के संयोजन(
—-) की जगह दो hyphen(--) होने चाहिएक्या इस option का मतलब यह है कि यह मूल curl call को wrap करने वाली script की जगह लेने वाला compile किया जा सकने वाला C program बना देता है?
libcurlसे यह पहले से संभव था, लेकिन अब तक boilerplate code खुद लिखना पड़ता थाइसे इस तरह देखना बेहतर है कि यह कई घंटे documentation खंगालने से बचाने वाला एक शुरुआती बिंदु है