作为GET请求RESTful API中的查询参数的ID数组

时间:2012-10-18 20:13:40

标签: 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中,从$ _GET ['colors']解析数组是开箱即用的。另外,当我使用

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

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

1 个答案:

答案 0 :(得分:1)

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

/api/cars?colors=1&colors=3&makes=6&makes=2&sold=false

在这些语言/框架中,它们通常提供以标量或数组形式访问请求参数的方法。所以你暴露了你的实现。如果要隐藏使用PHP的事实,可以将其更改为上述内容,但是您必须添加其他功能来解析请求参数。就像我说的那样,既然你是用PHP实现的,那么利用开箱即用的功能我并没有看到任何错误。

我唯一的建议是将您的网址端点更改为/api/cars/,因为您正在返回一系列汽车(大概),这似乎是更加RESTful的方法。

无论如何,只是我的两分钱。希望它有用。