Wenn ich eine kurze Definition geben würde, was Curl ist, würde ich wahrscheinlich so etwas schreiben:
Curl (Client for URLs) ist ein Konsolentool zum Senden (Empfangen und Senden) von Daten über das Internet unter Verwendung mehrerer Protokolle.
Kurz und knapp ✨
Es ist heute schwer, sich eine Welt der Kommunikation nach einer API ohne Curl vorzustellen. fast jede API-Dokumentation, auf die ich stoße, enthält Beispiele für die Verwendung dieses Befehls.
Curl es bietet eine einheitliche, sprachunabhängige Möglichkeit, HTTP-Anforderungen und -Antworten darzustellen. Es ist ein handliches Konsolenwerkzeug, das es einfach macht senden von HTTP / HTTPS-Anforderungen, Empfangen von Daten in verschiedenen Formaten und automatisieren Sie unsere Arbeit mit Skripten.
Wenn Sie neu in der IT sind oder ein erfahrener Benutzer sind, lernen Sie zu verwenden curl
dies kann Ihnen beim Arbeiten mit der REST-API eine Menge Zeit und Mühe ersparen.
Also schnappen Sie sich eine Tasse Kaffee und lassen Sie uns in die Grundlagen von Curl eintauchen! ☕
Eine kurze Anleitung zur Verwendung von CURL für HTTP / REST-API-Anforderungen
Inhaltsverzeichnis:
Öffnen Sie ein Terminal (Linux / Mac) oder eine Eingabeaufforderung und wir können beginnen
📌 Hinweis für Windows-Benutzer:
Windows 11: curl
es ist bereits auf Ihrem System verfügbar.
Windows 10: Wenn die Win10-Version unter 1803 (Mai 2018) liegt oder Sie zuvor Windows haben, sollten Sie curl installieren. Sie finden die Installation auf der offiziellen Website (32-Bit- und 64-Bit-Versionen sind verfügbar)
Oder wenn Sie Git für Windows verwenden (entnommen von git-scm.com ) curl ist bereits unter dem Pfad installiert C:Program FilesGitmingw64bin
. Fügen Sie es einfach unter dem Pfad zu den Systemvariablen hinzu PATH
und Sie kennen die Befehle neu zu starten.
GET request
GET-Anfragen sind am einfachsten zu senden. Das einzige, was wir brauchen, ist, unsere URL als Befehlsargument zu übergeben curl
curl https://api.restful-api.dev/objects
Wir erhalten eine Antwort:
[ { "id": "1", "name": "Google Pixel 6 Pro", "data": { "color": "Cloudy White", "capacity": "128 GB" } }, { "id": "2", "name": "Apple iPhone 12 Mini, 256GB, Blue", "data": null } ... ]
Wir können curl mit verwenden -v
(abkürzung für --verbose
), um den vollständigen Beschreibungsmodus zu aktivieren und weitere Details zur Abfrage zu sehen.
curl -v https://api.restful-api.dev/objects
Lassen Sie uns versuchen, zu einem anderen Pfad zu wechseln (Path params), um das Objekt zu erhalten id
werte 1
curl https://api.restful-api.dev/objects/1
Wir können beispielsweise auch Abfrageparameter verwenden.
curl https://api.restful-api.dev/objects?id=3
Ein Beispiel:
Lassen Sie uns an einem realen Beispiel testen, verwenden Sie die Portal-API dev.to , um Artikel nach Autor herunterzuladen (mein Profil sieht so aus dev.to/ritaly . aber ich möchte nur die Datensätze erhalten)
curl https://dev.to/api/articles?username=ritaly
Abfragen mit mehreren Parametern
Wenn wir mehrere Parameter übergeben wollen, müssen wir sie durch ein kaufmännisches und–Zeichen aufteilen (& – vermutlich der polnische Name “etka”😉).
➜ API-Dokumentation dev.to : https://developers.forem.com/api/v1
Schauen wir uns noch einmal an dev.to API-Wir möchten 3 Parameter kombinieren
tag
: artikel, die # devjournal enthaltentop
die beliebtesten Artikel in 5 Tagenper_page
: limit von 5 Artikeln pro Seite
curl "https://dev.to/api/articles?tag=devjournal&top=5&per_page=5"
📌 Beachten:
Wir müssen Anführungszeichen um die URL hinzufügen, sonst wird der Befehl falsch ausgeführt -das kaufmännische Und-Zeichen wird als Ende des Befehls gelesen.
POST request
Wir öffnen ein neues Objekt mit den folgenden Daten als body:
{ "name": "Apple MacBook Pro 16", "data": { "year": 2019, "price": 2049.99, "CPU model": "Intel Core i9", "Hard disk size": "1 TB", "color": "silver" } }
Wir senden, curlem anfrage POST:
curl -X POST https://api.restful-api.dev/objects -H 'Content-Type: application/json' -d '{"name":"Apple MacBook Pro 16","data":{"year":2019,"price":2049.99,"CPU model":"Intel Core i9","Hard disk size":"1 TB","color":"silver"}}'
In der Antwort sehen wir ein neues Objekt, das erstellt wurde (kopieren Sie seinen Wert id
das wird für uns nützlich sein).
Schauen wir uns die Optionen an curl
:
-X <METHOD>
– legt die HTTP-Anforderungsmethode fest, z. B. POST, PUT, PATCH, DELETE-H
– übergibt einen benutzerdefinierten Header (curl verwendetapplication/x-www-form-urlencoded
als Standardtyp-HeaderContent-Type
. wir haben es geändert inJSON
)-d
– daten / ” body ” (body) Anfrage, auch als Payload-API bezeichnet, wie wir im Content-Type angegeben haben, sind unsere Daten im JSON-Format
Wenn Sie mehr als einen Titel senden möchten, können Sie die Option verwenden -H
mehr als einmal, zum Beispiel für eine Abfrage GET /objects
curl -v -H 'Connection: keep-alive' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' https://api.restful-api.dev/objects
Indem Sie sie mit ausführen -v
wir können sehen, welche Headers angewendet wurden:
> GET /objects HTTP/2 > Host: api.restful-api.dev > user-agent: curl/7.79.1 > connection: keep-alive > accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 > accept-language: en-GB,en-US;q=0.8,en;q=0.6
Curl wird standardmäßig als “Curl” identifiziert curl
. wir sehen dies im Feld User-agent. Wir können uns jedoch als Browser für unsere Tests vorstellen.
Fügen Sie eine Option hinzu -A
(--user-agent
), um den Benutzeragenten zu ersetzen
curl -v -H 'Connection: keep-alive' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en-GB,en-US;q=0.8,en;q=0.6' -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36' https://api.restful-api.dev/objects
Ergebnis:
> GET /objects HTTP/2 > Host: api.restful-api.dev > user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 > connection: keep-alive > accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 > accept-language: en-GB,en-US;q=0.8,en;q=0.6
PUT request
Die PUT-Methode aktualisiert das Objekt und ersetzt das vorhandene Objekt durch ein neues. Wir müssen bieten id
das Objekt, das wir aktualisieren möchten.
Anfrage senden PUT
, einrasten:id
die ID Ihres Objekts.
curl -X PUT https://api.restful-api.dev/objects/:id -H 'Content-Type: application/json' -d '{"name":"Apple MacBook Pro 16","data":{"year":2022,"price":2399.99,"CPU model":"M1","Hard disk size":"1 TB","color":"space grey"}}'
PATCH request
Die PATCH-Methode wird auch verwendet, um ein Objekt zu aktualisieren, indem jedoch die ausgewählten Felder des Datensatzes geändert werden, anstatt alles zu ersetzen.
Anfrage senden PATCH
(ersetzen :id
eigenen Wert).
curl -X PATCH https://api.restful-api.dev/objects/:id -H 'Content-Type: application/json' -d '{"name":"Fruity name"}'
Überprüfen Sie den Eintrag nach den Änderungen:
curl https://api.restful-api.dev/objects/:id
DELETE request
Zeit, um das Objekt mit der Methode zu löschen DELETE
. Diese Methode erfordert keine Bereitstellung von payload, aber wir müssen übergeben :id
Hotels:
curl -X DELETE https://api.restful-api.dev/objects/:id
Ihr Objekt wurde gelöscht
Abfragedaten aus einer Datei lesen
Wir können payload aus einer Datei lesen und sie als Anforderungstext in curl verwenden, indem wir die Option verwenden -d @requestfile
wo wir den Dateinamen oder den Dateipfad mit einem Symbol vorangestellt haben @
.
curl -X POST https://api.restful-api.dev/objects -d @request.json -H "Content-Type: application/json"
Datei request.json
(es muss an der gleichen Stelle existieren, an der wir die Abfrage ausführen):
{ "name": "Apple MacBook Pro 16", "data": { "year": 2019, "price": 1849.99, "CPU model": "Intel Core i9", "Hard disk size": "1 TB" } }
Schreiben einer Anforderungsantwort in eine Datei
Curl können Sie die Daten speichern, die Sie als Antwort auf eine Anfrage erhalten haben, die wir verwenden können -o
oder --output
Geben Sie dann einen Dateinamen an.
curl https://api.restful-api.dev/objects -o response.json
Hurrrra! 🥳
Wir haben gerade die Grundlagen der Verwendung von APIs mit cURL- und http-Methoden untersucht.
Natürlich gibt es viel mehr Möglichkeiten!
Training
Übung macht den Meister, also was wäre ein Lehrbuch ohne Kontrollen?
Aufgabe 1
- Abfrage ausführen GET in der JSONPLACEHOLDER-API. Lesen Sie die Dokumentation durch und laden Sie alle Benutzer herunter.
- Abfrage ausführen Post zu einer API, die die Funktionalität zum Erstellen eines Datensatzes bereitstellt. Sie können die JSONPLACEHOLDER API wiederverwenden (
POST /posts
). - Versuchen Sie, die Abfrage auszuführen PUTverwenden Sie die JSONPLACEHOLDER API, um eine vorhandene Ressource zu aktualisieren
posts/1
.
Aufgabe 2
Siehe die OpenWeatherMap API-Dokumentation (beachten Sie, dass Sie ein kostenloses Konto erstellen müssen, um Ihren API-Schlüssel abzurufen, der später in der Option als übergeben wird &appid={API key}
).
- Abfrage ausführen GET um die aktuelle Wettervorhersage für eine ausgewählte Stadt zu erhalten (z. B. Posen, Madrid, London).
- Abfrage ausführen GET, die eine 5-Tage-Wettervorhersage für Warschau zurückgibt (beachten Sie, dass Sie die Abfrage auf zwei Arten ausführen können, indem Sie Länge und Breite angeben oder die integrierte Option query params verwenden Built-in API request by city name).