获取具有大量参数的 RESTful 列表

Posted

技术标签:

【中文标题】获取具有大量参数的 RESTful 列表【英文标题】:get RESTful list with large amount of parameters 【发布时间】:2016-01-17 22:45:54 【问题描述】:

我想让我的应用程序的用户使用查询生成器指定搜索参数。 像这样的东西 http://dncrews.com/angular-elastic-builder/examples/ 或这个 http://mfauveau.github.io/angular-query-builder/

用 AngularJS 编写的前端通过 HTTP 与后端通信。 在后端我想实现 RESTful API。 而且我找不到任何建议如何以 RESTful 方式获取具有大量搜索参数的列表(通常通过 HTTP GET 请求检索)。 在我的情况下,用户可以构建将耗尽 URL 长度限制的查询。因此我不能使用 GET 请求类型。

【问题讨论】:

【参考方案1】:

简单,使用 POST。它对数据量没有任何限制。

【讨论】:

【参考方案2】:

一种常见的方法是使用POST 创建一个包含所有参数的/search-criteria 资源。然后使用查询参数?searchCriteria=id 执行GET

【讨论】:

我喜欢这种方法,但它需要向服务器发出 2 个请求。也许创建资源/search,通过POST接收查询后返回结果? 如果您愿意,您可以这样做。严格来说,它是 RPC 而不是 RESTful,但它并不少见。对于非常复杂的搜索条件,您可能希望允许用户记住他们的选择,这样他们就不必重新输入它们。此外,我非常怀疑这两个请求是否会引起最终用户的注意,但这就是测试的目的。 我更担心服务器要处理的额外请求。我决定将保存的搜索查询作为单独的资源来实现。因此,用户可以存储模板并重复使用它们或修改查询并请求不同的搜索配置,而无需存储它们。

以上是关于获取具有大量参数的 RESTful 列表的主要内容,如果未能解决你的问题,请参考以下文章

如何设计具有多个输入参数的 RESTful URL

具有多个参数的 WCF Restful API

RESTFUL如何指导WEB API设计?

RESTful

RESTful的详解

laravel实践15.Restful伪装