Javascript 如何根据REST通过查询字符串传递对象数组? 以REST样式通过查询字符串传递对象数组的最佳实践是什么?

Javascript 如何根据REST通过查询字符串传递对象数组? 以REST样式通过查询字符串传递对象数组的最佳实践是什么?,javascript,angular,rest,url,parameters,Javascript,Angular,Rest,Url,Parameters,例如,阵列: examples[] = [ { name: "foo", value: "1" }, { name: "bar", value: "2" } ] 我想了想: /items?示例[0][name]=foo和示例[0][value]=1和示例[1}[name]=bar和示例[1][value]=2 还有其他方法吗? Upd: 我需要一个可读的URL,以

例如,阵列:

examples[] = [
  { 
    name: "foo",
    value: "1"
  },
  {
    name: "bar",
    value: "2"
  }
]
我想了想:
/items?示例[0][name]=foo和示例[0][value]=1和示例[1}[name]=bar和示例[1][value]=2
还有其他方法吗?

Upd:

我需要一个可读的URL,以便在地址字段中显示表中某个筛选器的状态,而不是将其发送到后端

您不应该关心如何为后端传递数据,而应该为您这样做

关于您的示例,您可能希望更新或保存多个项目。因此,您不会将数据传递到url中,而是传递到请求正文中:

this.httpService.post(yourUrl, examples, yourHttpOptions).subscribe( (response) => {
  // you manage your response data
});

REST不关心您如何将信息编码到标识符中。您可以使用您想要的任何方案,只要它与所定义的生产规则一致

REST关心您如何共享有关创建URI的信息,从某种意义上讲,这些信息应该以某种易于标准化的形式共享,例如,或

据我所知,我们没有描述如何将json数组转换为查询字符串的“易于标准化的形式”

但是…REST确实允许按需编码;例如,将一堆java脚本嵌入到一个资源中,javascript知道如何将json编码到URI中…这是有限度的,只要您以易于标准化的方式引用按需编码本身(就像我们使用HTML和脚本标记时所做的那样)


实际上?URL对json表示进行编码,并将其直接放入查询字符串中。这将帮助您了解URI设计需要支持的真正需求(要求:操作员需要能够理解访问日志).

既然您在JS中手动解析,您可以保留现有的结构,只需编写一个解析函数

var items = {}; 

location.search.split("?")[1].split("&").map((q) => {
  var [token, value] = q.split("="),
      [idx, key] = /\[([0-9+])\]\[(\w+)\]/g.exec(token).slice(1, 3);
  
  if (!items[idx]){
    items[idx] = {};
  } 
  
  items[idx][key] = value;
})
这将产生一种结构类似

{
  "0": {
    "key1": "data"
    "key2": "data:
  },
  "1": {
    "key1": "data"
    "key2": "data"
  }
}
如果您需要它来结束一个数组,那么转换起来会很容易,但是如果它不是连续的,那么将它作为一个带有数字字符串的对象来保存可以防止出现错误


另外,请注意,这里没有错误检查或任何内容,因此,如果您要使用非该格式的查询字符串参数,您将需要对其进行测试并以不同的方式进行处理。

这看起来是一种有效的格式,但实际上取决于后端的期望。不同的语言或不同的主体解析器处理查询字符串数组不同。你要把它发送给什么?@hobberwickey我只在前端使用它(角度)向用户发送一个带有参数的人类可读的url。然后我从url中获取参数,并将其作为另一个包含大量其他数据的对象发布到后端。从技术上讲,您可以使用JSON.stringify,然后对整个数组进行url编码,并将其作为单个变量发送?您的api需要理解您将作为http post发送的JSON,而不是ate URL格式到那种程度。谢谢你的回答,但我不是用这个URL向后端发送数据,它是用来向用户显示一个带有可读参数的URL,这样他们就可以单击链接并在后端的地址字段中看到清晰的信息。我在请求正文中发送这些参数,这不是问题。情况是这样的此时,我想在地址字段中显示表中某个过滤器的状态