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

fnvucqvd  于 2023-10-24  发布在  其他
关注(0)|答案(4)|浏览(137)

我正在为一个Web应用程序构建一个Web服务,我想在开发过程中使用一个简单的工具来测试这个服务。我尝试过一些Firefox插件(Poster,REST Client),尽管这些插件工作正常,但我无法使用它们上传文件。
此外,我更希望有一个命令行工具,可以使用它轻松地为这个Web服务编写一组集成测试,并将其作为示例发送给这个Web服务的消费者。
我知道**curl**可以解决这个问题,但我想举几个例子,特别是关于身份验证(使用HTTP Basic)和文件上传的例子。

avkwfej4

avkwfej41#

回答我自己的问题。

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
oxosxuxt

oxosxuxt2#

除了现有的答案,通常还需要格式化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"
9w11ddsr

9w11ddsr3#

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发送post数据:

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

5tmbdcev4#

我使用hurl已经有一段时间了。它允许通过定义HTTP请求(包括基本的身份验证和请求体)和AssertHTTP响应的特定/预期属性来编写简单的测试用例。它甚至可以从响应中捕获值并将其馈送到后续(链式)请求中。有关详细信息,请参阅https://hurl.dev/

相关问题