Tutorial: Wie kann ich eine API mit cURL testen?

curl jak testować API

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 enthalten
  • topdie beliebtesten Artikel in 5 Tagen
  • per_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 verwendet application/x-www-form-urlencoded als Standardtyp-Header Content-Type. wir haben es geändert in JSON)
  • -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 @requestfilewo 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 --outputGeben 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).

Bereit, uns in Aktion zu sehen:

More To Explore

Haben Sie ein Projekt im Sinn?

Kontaktieren Sie uns:

small_c_popup.png