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

Mau*_*sen 24 curl web-services

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

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

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

Mau*_*sen 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
Run Code Online (Sandbox Code Playgroud)

发布文件和其他参数

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
Run Code Online (Sandbox Code Playgroud)


Tom*_*icz 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
Run Code Online (Sandbox Code Playgroud)

在Ubuntu 11.0.4/11.10上测试过.

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

$ curl -H "Accept: application/json"
Run Code Online (Sandbox Code Playgroud)