如何在查询字符串中传递很长的对象数组?

时间:2017-11-03 06:54:21

标签: rest url get restful-architecture restful-url

有一个RESTful API包含一些资源。我需要 GET 一些带有JSON表示形式的参数的资源:

{
  "id": int,
  "params":
  [
    {
      "param1": "string",
      "param2": "string"
    },
    {
      "param1": "string",
      "param2": "string"
    }
  ]
}

我有两种方法可以在查询字符串中发送此对象:

  • id=1&params[0].param1=test&params[0].param2=test&params[1].param1=test&params[1].param2=test
  • id=10000&params[0][param1]=test&params[0][param2]=test&params[1][param1]=test&params[1][param2]=test

问题是params数组可能包含很多项,查询字符串可能很长,超过2,000个字符。

通过GET在请求正文中发送params是个坏主意。

我如何以适当的REST方式发送此类参数?我可以使用其他HTTP方法吗?或者只是更改服务器上的查询长度?

2 个答案:

答案 0 :(得分:1)

使用 POST 方法获取一些数据,因为参数对于GET方法来说太长了 ISN' T 一个坏主意。

您可以在JSON中添加请求正文中的搜索选项,例如

{
  "id": int,
  "params":
  [
    {
      "param1": "string",
      "param2": "string"
    },
    {
      "param1": "string",
      "param2": "string"
    }
  ]
}

答案 1 :(得分:0)

如果你想要一个幂等请求URI(即响应总是相同的),那么使用GET,否则使用POST。

有关详情,请点击此处查看答案: - Why should I POST data rather than GET?