首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GET请求RESTful接口中作为查询参数的in数组

GET请求RESTful接口中作为查询参数的in数组
EN

Stack Overflow用户
提问于 2012-10-19 04:13:40
回答 1查看 3.3K关注 0票数 3

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

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

代码语言:javascript
运行
复制
/api/cars?colors[]=1&colors[]=3&makes[]=6&makes[]=2&sold=false

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

在PHP中,解析来自$_GET‘’colors‘的数组可以开箱即用。另外,当我使用

代码语言:javascript
运行
复制
$.ajax({
  url: "someurl",
  method: "GET",
  data: {
    cars: theCarsArray,
    makes: theMakesArray,
    sold: false
  }
});

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

EN

回答 1

Stack Overflow用户

发布于 2012-10-19 05:04:09

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

代码语言:javascript
运行
复制
/api/cars?colors=1&colors=3&makes=6&makes=2&sold=false

在这些语言/框架中,它们通常提供以标量或数组形式访问请求参数的方法。所以你是在公开你的实现。如果您想隐藏您正在使用PHP的事实,您可以将其更改为上面的代码,但是您必须添加额外的功能来解析您的请求参数。正如我所说的,既然您是用PHP实现的,我认为利用它提供的开箱即用功能并没有什么错。

我唯一的建议是将您的url端点更改为/api/cars/,因为您将返回一个汽车集合(假设),而这似乎是更具RESTful的方法。

不管怎样,这只是我的两个观点。希望能对你有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12962977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档