2012-10-18 31 views
2

过去几周我在PHP(Laravel框架)中构建了一个RESTful API。此外,我正在构建使用此API的JavaScript前端(jQuery/Backbone)。GET请求中的ID作为查询参数的数组RESTful API

在这个API中有一些GET请求需要相当数量的查询参数,其中大多数是ID数组。我已经构造这样的:

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

(具有ID例如,颜色= 1是红色的,使与ID = 6的奥迪等)

在PHP数组的从$ _GET [解析'颜色']开箱即用。此外,当我使用

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

似乎也很好地工作(数组发送如上所述的URL)。我想知道:这是在REST接口中发送ID数组的可接受方法吗?这种方法有什么缺点吗?有什么选择?

回答

1

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

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

在那些语言/框架,他们经常提供了访问请求参数作为标量或作为阵列的方法。所以你公开你的实现。如果你想隐藏你使用PHP的事实,你可以改变它到上面,但是你必须添加额外的功能来解析你的请求参数。就像我之前所说的那样,因为你正在用PHP实现这个功能,所以我没有发现利用它提供的开箱即用功能有什么问题。

我唯一的建议是将您的网址终结点更改为/api/cars/,因为您正在返回一系列汽车(可能),而且这似乎是更加REST风格的方法。

无论如何,只是我的两分钱。希望这是有帮助的。

+0

这个语法真的是PHP特有的吗?看起来Rails也使用这种方法? http://rails.nuvvo.com/lesson/6371-action-controller-parameters – ec30