我正在使用elasticsearch,并且RESTful API支持在搜索条件的GET请求中支持阅读主体。发送带有正文的GET请求
目前,我正在做
response = urllib.request.urlopen(url, data).read().decode("utf-8")
如果data
存在,它会发出一个帖子,否则GET。我怎么能强制GET,尽管我包括数据(这应该是在POST的请求正文)
铌:我知道我可以在Url中使用source
属性,但查询我们运行起来非常复杂,查询定义非常冗长,导致查询时间过长。
通过Roy Fielding的[关于该问题的评论](http://tech.groups.yahoo.com/group/rest-discuss/message/9962)(via:http:// stackoverflow .com/questions/978061/http-get-with-request-body),似乎这是对HTTP规范的滥用,并且解决方案将为弹性搜索人员所依赖。基本上,只有当服务器存在时才允许请求主体崩溃,而不是因为它意味着以任何方式进行处理。 (根据Wiki,Roy Fielding是HTTP的作者之一,也是REST的创始人之一,所以我猜他会知道的。) – millimoose 2013-03-20 16:55:30
@millimoose这是一个间接参数 - 从语义上讲,当考虑REST服务时它是有意义的 - GET涉及逻辑操作,而不是通信机制 – Basic 2013-03-20 16:58:18
这就是说,我相信['http.client'](http://docs.python.org/3.0/library/http.client.html)可能比'urllib'并允许你构造“不寻常”的请求。 – millimoose 2013-03-20 17:00:24