我正在为Web应用程序构建Web服务,我想要一个简单的工具来测试这个,因为我正在开发。我已经尝试了一些firefox插件(海报,'REST客户端'),即使这些工作正常我也无法用它们上传文件。
另外,我宁愿使用一个命令行工具,我可以轻松地为这个Web服务编写一组集成测试,并且我可以发送给这个Web服务的消费者作为一个例子。
我知道 curl
可以为此工作,但想要一些示例,尤其是围绕身份验证(使用HTTP Basic)和文件上传。
答案 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