我们正在设计一个iPhone应用程序,它将回调在Tomcat中运行的RESTful服务.我们需要发送许多查询参数,并且已超过手机允许的最大值.
将PUT调用与正文中的参数一起使用是否是RESTful,即使意图不修改服务器?POST似乎不正确,因为它不是幂等的,而PUT是(因此更接近于行为或GET).
谢谢.
您有三个最符合HTTP的选项:
首先,您可以选择以某种方式发送压缩的params以形成更短的URL.
其次,也没什么可说GET是说你不能在请求发送消息体,无论在Content-Type或-Length您选择.并非所有服务器都支持此功能,但HTTP协议本身也是如此.
第三,您可以将参数发布到/queries/资源,并在响应头中响应201 Created并使用新的URL(如/queries/78a65g82),Location客户端然后调用GET(重复,甚至在Ranges,如果这是一个好处),以检索结果.
如果您想要 RESTful,您可以这样做:将参数 PUT 到服务器(在您选择的位置),或者您可以 POST 它们并让服务器为您放置它们。无论哪种方式,您都刚刚创建了一个包含所需参数的资源。然后您发送一个引用该特定资源的 GET。因此,在响应您的 GET 时,服务器知道从哪里获取其大量参数。那将是宁静的。
但是,如果您可以使用单个请求执行相同的操作,那么发送两个请求的效率并不是很高。我只是尝试务实一些。
考虑一下:PUT 告诉代理它们不应该缓存响应,但重试(通过沿线的任何基础设施元素)绝对是可能的,因为它是幂等的(就像 GET 一样)。与 PUT 相比,GET 能给您带来什么?响应可以被缓存。但有了如此大量的参数,我会假设大多数请求无论如何都是唯一的,对吧?因此,缓存通常不会带来太多回报。因此,使用 PUT 似乎是务实的,因而是正确的选择。
| 归档时间: |
|
| 查看次数: |
9740 次 |
| 最近记录: |