Php 获取请求RESTful API中作为查询参数的ID数组

Php 获取请求RESTful API中作为查询参数的ID数组,php,rest,parameters,Php,Rest,Parameters,在过去的几周里,我用PHP(Laravel框架)构建了一个RESTful API。此外,我正在构建一个使用此API的JavaScript前端(jQuery/Backbone) 在这个API中,有些GET请求需要相当数量的查询参数,其中大多数是ID数组。我的结构如下: /api/cars?colors[]=1&colors[]=3&makes[]=6&makes[]=2&sold=false (例如ID=1的颜色为红色,ID=6的品牌为奥迪等) 在PHP中,从$\

在过去的几周里,我用PHP(Laravel框架)构建了一个RESTful API。此外,我正在构建一个使用此API的JavaScript前端(jQuery/Backbone)

在这个API中,有些GET请求需要相当数量的查询参数,其中大多数是ID数组。我的结构如下:

/api/cars?colors[]=1&colors[]=3&makes[]=6&makes[]=2&sold=false
(例如ID=1的颜色为红色,ID=6的品牌为奥迪等)

在PHP中,从$\u GET['colors']解析数组是开箱即用的。还有,当我使用

$.ajax({
  url: "someurl",
  method: "GET",
  data: {
    cars: theCarsArray,
    makes: theMakesArray,
    sold: false
  }
});

似乎也能很好地工作(数组在URL中发送,如上所述)。我想知道:这是在REST接口中发送ID数组的公认方法吗?这种方法有什么缺点吗?有哪些替代方案?

根据我的经验,这是将数组值传递给PHP脚本的公认方式。既然您使用的是PHP,就应该充分利用已有的功能。也就是说,当web页面在其他编程语言/框架中实现时,通常不会以这种方式传递数组值。在某些情况下,您会看到:

/api/cars?colors=1&colors=3&makes=6&makes=2&sold=false
在这些语言/框架中,它们通常提供以标量或数组形式访问请求参数的方法。因此,您正在公开您的实现。如果您想隐藏您正在使用PHP的事实,您可以将其更改为上述内容,但是您必须添加额外的功能来解析您的请求参数。正如我所说的,由于您是用PHP实现的,所以我认为利用它提供的现成功能没有什么错

我唯一的建议是将您的url端点更改为
/api/cars/
,因为您将返回一组汽车(大概是这样),这似乎是一种更为RESTful的方法


不管怎样,只要我的两分钱。希望对你有帮助

这种语法真的是特定于PHP的吗?看起来Rails也使用了这种方法?