【发布时间】:2014-11-25 09:43:03
【问题描述】:
我正在开发一个基于 HAL 规范的 REST API。 API 是用 PHP 和 Symfony 开发的,客户端是用 angularjs 构建的。 API 必须返回一些列表,它们将使用 ngtables library 显示,并且需要过滤选项,最好是 ngtables 使用的格式,例如 this sample。
{ "name": "M", "age": "4" }
(当然未来的客户可能会使用相同的选项。)
我的前端同事建议我将 json 编码直接作为 url 中的参数发送,如下所示:
?filter=%7B%20%22name%22%3A%20%22M%22%2C%20%22age%22%3A%20%224%22%20%7D%20
不过我不太确定。
我一直在阅读如何使用像 param[]=foo&param[]=bar 这样的参数通过 URL 发送数组,但这确实意味着多个值有一个键。在我的情况下,我需要能够像 Json 对象那样为数组发送不同的键值。
我想知道来自客户端的请求 URL 应该如何才能在一个参数中包含所有过滤器选项,以及是否有任何标准方法可以做到这一点。
已编辑:在@Ross_Turner 之后,我想澄清一下我在参数中传递键值数组的意图是因为我们将有另一种类型的参数。例如:
?filter=<my key-value array>&page=1&limit=50&anotherParam=whatever
即使我们想使用另一个包含另一个键值数组的参数,如下所示:
?filter=<my key-value array>&sorting=<another key-value array>&page=1&limit=50
filter 和 sorting 可以有相同的键。
【问题讨论】: