web-dev-qa-db-ja.com

コマンドラインcurlを使用してWebサービスをテストする方法

Webアプリケーション用のWebサービスを構築していますが、開発中にこれをテストする簡単なツールが欲しいです。私はいくつかのFirefoxプラグイン(ポスター、「RESTクライアント」)を試しましたが、これらがうまく機能しているにもかかわらず、ファイルをアップロードすることができませんでした。

また、このWebサービスの一連の統合テストを簡単に記述し、このWebサービスの利用者に例として送信できるコマンドラインツールが必要です。

curlがこれに対して機能することを知っていますが、特に認証(HTTP Basicを使用)とファイルのアップロードに関するいくつかの例を示します。

24
Mauritz Hansen

既存の回答に加えて、REST出力(通常、JSONおよびXMLにはインデントがありません)をフォーマットすることが望まれます。これを試してください。

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

Ubuntu 11.0.4/11.10でテスト済み.

もう1つの問題は、目的のコンテンツタイプです。 Twitterは.xml/.json拡張ですが、より慣用的なRESTはAcceptヘッダーを必要とします:

$ curl -H "Accept: application/json"
18

自分の質問に答える。

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

ファイルと追加パラメーターのPOST

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
23
Mauritz Hansen

http://curl.haxx.se/docs/httpscripting.html のドキュメントから:

HTTP認証

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

Curlを使用してHTTPサーバーにファイルを配置します。

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

Curlを使用して投稿データを送信します。

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