如http://www.boutell.com/newfaq/misc/urllength.html中所述,HTTP查询字符串的长度有限。它可能受客户端(Firefox,IE等),服务器(Apache,IIS等)或网络设备(应用防火墙等)的限制。
今天,我用搜索表来面对这个问题。我们开发了一个包含很多字段的搜索表单,该表单作为GET请求发送到服务器,因此我可以将结果页面添加为书签。
我们的字段太多,查询字符串的长度为1100个字节,而防火墙则丢弃了超过1024个字节的HTTP GET请求。我们的系统管理员建议我们改用POST,因此没有限制。
当然,POST可以工作,但是我真的觉得搜索是GET而不是POST。因此,我想我将检查我们的字段名称,以确保查询字符串不会太长,如果不能,我将务实并使用POST。
但是RESTful服务的设计是否存在缺陷?如果GET请求的长度有限,该如何将大型对象发送到RESTful Web服务?举例来说,如果我有一个程序,使基于文件的计算,我想提供一个RESTful Web服务这样的:http://compute.com?content=<base64 file>
。这将不起作用,因为查询字符串没有无限的长度。
我有点困惑