27 Stimmen

Testen eines Webdienstes mit der Befehlszeile curl

Ich baue einen Webdienst für eine Webanwendung auf und hätte gerne ein einfaches Werkzeug, um diesen während der Entwicklung zu testen. Ich habe einige Firefox-Plug-ins ausprobiert (Poster, "REST Client"), und obwohl diese gut funktionieren, konnte ich damit keine Dateien hochladen.

Außerdem hätte ich lieber ein Kommandozeilen-Tool, mit dem ich auf einfache Weise eine Reihe von Integrationstests für diesen Webdienst schreiben kann und das ich als Beispiel an die Nutzer dieses Webdienstes senden kann.

Ich weiß, dass curl funktionieren kann, aber ich hätte gerne ein paar Beispiele, insbesondere zur Authentifizierung (mit HTTP Basic) und zum Hochladen von Dateien.

24voto

Mauritz Hansen Punkte 4514

Ich beantworte meine eigene Frage.

curl -X GET --basic --user username:password \
     https://www.example.com/mobile/resource

curl -X DELETE --basic --user username:password \
     https://www.example.com/mobile/resource

curl -X PUT --basic --user username:password -d 'param1_name=param1_value' \
     -d 'param2_name=param2_value' https://www.example.com/mobile/resource

POSTing einer Datei und zusätzlicher Parameter

curl -X POST -F 'param_name=@/filepath/filename' \
     -F 'extra_param_name=extra_param_value' --basic --user username:password \
     https://www.example.com/mobile/resource

17voto

Tomasz Nurkiewicz Punkte 322861

Zusätzlich zu den vorhandenen Antworten ist es oft erwünscht, die REST-Ausgabe zu formatieren (typischerweise fehlt JSON und XML die Einrückung). Versuchen Sie dies:

$ curl https://api.twitter.com/1/help/configuration.xml  | xmllint --format -
$ curl https://api.twitter.com/1/help/configuration.json | python -mjson.tool

Getestet auf Ubuntu 11.0.4/11.10.

Ein weiterer Punkt ist der gewünschte Inhaltstyp. Twitter verwendet .xml / .json Erweiterung, aber ein idiomatischeres REST würde erfordern Accept Kopfzeile:

$ curl -H "Accept: application/json"

4voto

alessioalex Punkte 60195

Aus der Dokumentation über http://curl.haxx.se/docs/httpscripting.html :

HTTP-Authentifizierung

curl --user name:password http://www.example.com 

Übertragen Sie eine Datei mit curl auf einen HTTP-Server:

curl --upload-file uploadfile http://www.example.com/receive.cgi

Senden Sie Postdaten mit curl:

curl --data "birthyear=1905&press=%20OK%20" http://www.example.com/when.cgi

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X