如何使用命令行curl测试Web服务

时间:2011-11-17 12:38:20

标签: web-services curl

我正在为Web应用程序构建Web服务,我想要一个简单的工具来测试这个,因为我正在开发。我已经尝试了一些firefox插件(海报,'REST客户端'),即使这些工作正常我也无法用它们上传文件。

另外,我宁愿使用一个命令行工具,我可以轻松地为这个Web服务编写一组集成测试,并且我可以发送给这个Web服务的消费者作为一个例子。

我知道 curl 可以为此工作,但想要一些示例,尤其是围绕身份验证(使用HTTP Basic)和文件上传。

3 个答案:

答案 0 :(得分:23)

回答我自己的问题。

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

发布文件和其他参数

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

答案 1 :(得分:18)

除了现有的答案之外,通常还需要格式化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上测试。

另一个问题是所需的内容类型。 Twitter使用.xml / .json扩展名,但更多惯用的REST需要Accept标题:

$ curl -H "Accept: application/json"

答案 2 :(得分:4)

来自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