【发布时间】:2015-06-10 21:31:59
【问题描述】:
REST 架构说资源状态也应该获得一个 URL。
我正在制作一个带有非常大查询的小型应用程序。我想为每个查询生成 URL,但查询通常大于 URL 字符限制。我尝试使用 URL 缩短器,但我的 URL 对它们来说太大了。
网上很多人建议使用 POST,但这不是幂等的。我真的不想限制我的查询长度,并且 URL 应该能够识别无限量的资源。
是否有一种 RESTful 方式来解决不涉及 POST 请求的非常大的 URL?
【问题讨论】:
-
使用
PUT,至少是幂等的。唉,every abstraction is leaky. -
ElasticSearch 通过在 GET 请求中实际包含正文来解决此类问题。不确定这是多么标准(并且一些 HTTP 客户端不会发出这样的请求),但我还没有看到 RFC 在哪里禁止它。
-
明天我会调查你的建议。有趣的是,办公室里有人告诉我搜索与 REST 架构完全不匹配。这是有道理的,你们中的任何人都同意/不同意吗?我对 REST 很陌生,刚刚阅读了 O'Reilly 的书,我正在努力坚持下去,即使没有练习,也可以练习。
-
我不同意。如果您将查询视为资源,则搜索可以在 REST 上建模。请看我的回答。
-
搜索和 REST 只要您的查询相对较短和简单——或者如果您将重新运行足够长或复杂的查询以证明将它们持久化在服务器上是合理的。 (注意,重要的是 查询,而不是结果列表。短查询可以产生大量结果。)除非在服务器上持久化搜索确实有优势,否则将搜索作为资源是一种hack 让您对使用正确的动词感觉更好。作为回报,您现在可以管理另一种资源,而客户不会特别倾向于进行这种管理。