Bibliothek „libcurl“
(everything.curl.dev)Verwendung von --libcurl
- Empfehlung zur Nutzung von libcurl: Nutzern wird empfohlen, zunächst das
curl-Kommandozeilenwerkzeug zu verwenden, um die gewünschte Übertragung auszuprobieren. Wenn sie ungefähr wie gewünscht funktioniert, sollten sie den Schalter--libcurl [Dateiname]zur Kommandozeile hinzufügen und den Befehl erneut ausführen. - Code-Generierung: Die Kommandozeilenoption
--libcurlerzeugt mit dem angegebenen Dateinamen ein C-Programm. Dieses C-Programm verwendet libcurl, um die Übertragung auszuführen, die dascurl-Kommandozeilenwerkzeug durchgeführt hat. - Ausnahmen und Unterschiede: Es ist nicht immer zu 100 % identisch, kann aber eine hervorragende Inspiration für die gewünschten libcurl-Optionen und zusätzlichen Argumente liefern.
Beispielcode
- Ausführungsbeispiel: Wenn der Befehl
curl http://example.com --libcurl example.causgeführt wird, wird im aktuellen Verzeichnis die Dateiexample.cerzeugt. - Generierter Code: Der erzeugte Code enthält verschiedene Optionseinstellungen mit
curl_easy_setopt(). Einige Optionen lassen sich nicht leicht direkt aus dem Quelltext erzeugen, sodass Nutzer sie selbst implementieren oder möglicherweise nicht verwenden.
Meinung von GN⁺
- Nützlichkeit von libcurl: Diese Funktion ermöglicht es Entwicklern, einen auf der Kommandozeile funktionierenden
curl-Befehl einfach in ein C-Programm umzuwandeln und so die Entwicklung von Anwendungen mit libcurl zu beschleunigen. - Vorteile der Code-Generierung: Der automatisch erzeugte Code kann Entwicklern helfen, die libcurl-API schneller zu verstehen und anzuwenden.
- Wert als Lernwerkzeug: Für angehende Softwareentwickler kann dies ein gutes Lernmaterial sein, das libcurl-Optionen und praktische Anwendungsfälle der Netzwerkprogrammierung zeigt.
1 Kommentare
Hacker-News-Kommentare
Es ist ein sehr gutes Muster, in den Netzwerk-Tab der Browser-Entwicklertools zu gehen, die gewünschte Anfrage zu finden, sie mit „copy as curl“ zu kopieren und dann mit einem Tool wie https://curlconverter.com/ in Anfrage-Code für die verwendete Sprache umzuwandeln
In gewisser Weise wird curl dabei wie eine Zwischendarstellung verwendet, die sich in alles Mögliche übersetzen lässt
curl_translateaus dem kürzlich neu geschriebenen httr2-Paket den Befehl „copy as curl“ in Anfrage-Code umwandelnhttps://httr2.r-lib.org/reference/curl_translate.html
„copy as curl“ im Browser übernimmt Authentifizierungs- und Encoding-Header in einem sicher funktionierenden Zustand und ist viel bequemer, als selbst an einem mehrzeiligen curl-Befehl herumzubasteln
Man kann Anfrageparameter ändern und sie an eine lokale Instanz schicken oder die Ausgabe mit
jqper Pipe nachbearbeitenEs ist so weit verbreitet, dass es Tools gibt, die Anfragen als cURL exportieren, und andere, die cURL importieren
Es ist ziemlich cool, dass eine Kommandozeilenschnittstelle ein Flag hat, das den Programmquellcode ausgibt, der dasselbe tut wie der aktuelle Befehl
Es fühlt sich an, als würde man die Motorhaube öffnen und sehen, was intern passiert. Das hilft nicht nur, das Verhalten besser zu verstehen, sondern macht es auch leichter, es an eigene Bedürfnisse anzupassen oder zu erweitern
Wenn man
libcurlverwendet und etwa Range Requests braucht oder im Browser-Netzwerk-Tab „copy as curl“ gemacht hat, kann man den Befehl auf der Kommandozeile ausführen und einfach--libcurlanhängen, um genau zu sehen, wie es mit der C-Bibliothek gehtSo etwas war einer der Gründe für den Erfolg von Visual-Basic-Makros in Microsoft Office
Man konnte in Word oder Excel eine Aktion ausführen, sich das erzeugte Makro ansehen und den Code dann an die eigenen Bedürfnisse anpassen. Ein simples, aber mächtiges Konzept, und schön, es auch bei curl zu sehen
Es scheint allerdings schon länger nicht mehr aktualisiert worden zu sein: https://github.com/dotnet/Open-XML-SDK/releases/tag/v2.5
Das erinnert auch an AREXX auf dem Amiga
Zum Kompilieren muss man das Linken mit libcurl angeben, etwa durch
-lcurlbeigccZum Beispiel kann man mit
curl https://ifconfig.me --libcurl ip_fetcher.cdie IP-Adresse undip_fetcher.cerzeugen, dann mitgcc -o ip_fetcher ip_fetcher.c -lcurlkompilieren und anschließend./ip_fetcherausführen, woraufhin die IP-Adresse ausgegeben wirdFür Leute, die nicht täglich C-Code schreiben, ist selbst dieser grundlegende Link-Schritt nützliche Information
makeangenehmer ist als direktcceinzugeben, geht es auch noch einfacherNach
curl https://ifconfig.me --libcurl ip_fetcher.ceinfachmake LDFLAGS=-lcurl ip_fetcherund dann./ip_fetcherausführenKleine Eigenwerbung: Hurl ist ein Open-Source-CLI, das mit libcurl HTTP-Anfragen in Klartext ausführt und testet
Es nutzt die hohe Zuverlässigkeit von libcurl und Funktionen wie HTTP/3 und ergänzt Dinge wie das Verketten von Anfragen, das Erfassen von Daten aus Antworten und deren Weitergabe an die nächste Anfrage sowie Antworttests mit JSONPath und XPath
Es gibt auch syntaktischen Zucker für REST-/SOAP-/GraphQL-API-Anfragen, aber im Kern ist es einfach libcurl, und mit der verbose-Option kann man sogar curl-Befehle per grep durchsuchen. Ich bin als Maintainer beteiligt
https://hurl.dev
Es wäre schön, wenn ffmpeg so etwas auch könnte
Daniel Stenberg achtet wirklich extrem sorgfältig auf Details sowie auf die Entwickler- und Nutzererfahrung
Dieses Maß an Feinschliff ist erstaunlich
Ich meine mich zu erinnern, dass Daniel Stenberg diese Option in einem dreistündigen Video erwähnt hat, in dem er die meisten curl-Kommandozeilenoptionen durchgeht
https://www.youtube.com/watch?v=V5vZWHP-RqU
Der Einsendetitel sollte nicht die Kombination aus Geviertstrich und Bindestrich (
—-) sein, sondern zwei Bindestriche (--)Bedeutet diese Option ursprünglich, dass sie ein kompilierbares C-Programm erzeugt, das ein Script ersetzen kann, das einen curl-Aufruf kapselt?
libcurlwar das schon immer möglich, aber bisher musste man den Boilerplate-Code selbst schreibenMan sollte es eher als Ausgangspunkt sehen, der einem einige Stunden Dokumentationssuche erspart