【发布时间】:2013-06-19 00:24:24
【问题描述】:
对我们服务的请求如下所示:
GET http://[SERVICE]/Node:[id].Build?format=mime1,mime2,...,mimeN&template-id=[templateid]
Accept: multipart/mixed
Content-Type: application/json
body: json document
我正在尝试使用 ApacheBench 来测试这个基准。这是我正在使用的电话:
ab -n 10 -c 2 -T 'application/json' -H 'Accept: multipart/mixed' 'http://phx5qa01c-02b0.stratus.phx.qa.ebay.com/.Build?format=text/html,text/plain&template-id=29b1468f-c8c3-db23-2f6f-74e112795540'
此调用通过,并导致错误,因为预期的 json 数据不存在。ab 中是否有办法提供必要的 json 以及此请求。我看到有 -p 和 -u 命令来指定输入文件,但它们是用于放置和发布的。
【问题讨论】:
-
我质疑你为什么首先使用
GET方法来发送数据。尽管这样做is not technically prohibited,但您的用例不太可能不违反 RFC 2616 对安全性和幂等性的要求。您是否使用 JSON 文档作为查询字符串替换来从资源中进行复杂查询?请分享您这样做的动机。 -
我们这样做的原因是因为我们需要传入很多变量,以便准确指定要获取的内容。我们考虑将这些作为查询参数,但使用 json 更有意义。我们不发送数据本身,只发送描述我们需要的标准/变量。有没有办法使用 ab 做到这一点?
-
啊,我明白了。这是有道理的,尽管我仍然建议简化 API 以通过 URI 查询字符串提供特定的、可寻址的参数。例如,不是从一个单一资源中提供一个庞大的查询引擎,而是将其分解为子资源以查询某些类型的资源。我相当肯定
ab无法做到这一点,并且有一个很好的理由:HTTP 运行良好,因为它是标准化的。通过 GET 主体创建自己的查询方案会使事情变得不必要地复杂化,通常不鼓励这样做。 -
有道理,感谢您的意见。
标签: http apachebench