3

在过去的几周里,我一直在用 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 数组的公认方法吗?这种方法有什么缺点吗?有哪些替代方案?

4

1 回答 1

1

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

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

在这些语言/框架中,它们通常提供将请求参数作为标量或数组访问的方法。所以你暴露了你的实现。如果您想隐藏您正在使用 PHP 的事实,您可以将其更改为上述内容,但是您必须添加额外的功能来解析您的请求参数。就像我说的那样,由于您是在 PHP 中实现它,所以我认为利用它提供的开箱即用功能没有任何问题。

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

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

于 2012-10-18T21:04:08.950 回答