【问题标题】:JS: GET request with added "data" parameter like cURL -d '{key: value, key2: value}'JS:带有添加“数据”参数的 GET 请求,例如 cURL -d '{key: value, key2: value}'
【发布时间】:2017-11-19 18:09:02
【问题描述】:

我正在使用 react-redux 组合和 axios 连同它来执行 GET 请求。 但是,我需要使用添加的“数据”属性进行请求。

就像cURL 使用-d 标志执行获取请求一样。

例如。 cURL <...> -d '{"key1": "value", "key2": "value"}'

Axios 文档,但是说只有 POSTPUT 等可以有 'data' 选项。 GET不支持这个。

我应该在 react-redux 中使用什么 JS 库/工具来执行此操作?

有什么建议吗?

【问题讨论】:

  • axios 允许你这样做。只需传入数据参数,它就会起作用,就像你发帖时它的工作原理一样。
  • @VivekN 您是否将“数据”与 GET 一起使用?因为文档说它只允许在“PUT”、“POST”和“PATCH”中使用data 部分...
  • 您可以在 axios 的 params 键中发送所有数据对象。例如:-axios.get('autocomplete.wunderground.com/aq', { params: { query: 'tehran', name: 'vivek nayyar' } }) .then((response) => { console.log(response); } ) .catch((error) => { console.log(error); }) }
  • 在 linux 中使用 curl 我可以使用 -d 选项并使用 -X GET 强制执行 GET 请求

标签: javascript curl httprequest react-redux axios


【解决方案1】:

您不能像使用 POST 和 PUT 那样使用 GET 请求附加数据。这是底层 http 规范的一部分。

您需要将数据包作为查询参数包含在内。有几种方法可以做到这一点,例如:

const package = JSON.stringify({"key1": "value", "key2": "value"})
axios.get('/user?ID=12345&data=' + escape(package))

然后在后端你将 unescape 和 JSON.parse data

但理想情况下,您不应该这样做。 POST 和 PUT 专门为此角色设计,允许您发送大量数据。这些请求类型也分别用于创建或更新远程资源。 GET 意味着检索在 URI 中定义的资源,而不是更改/创建/更新它。

【讨论】:

  • 我最近读到了,正如我之前指出的,它允许但不允许在 GET 请求中。这就是问题所在..
  • 更新答案。
  • 我绝对了解 GET 的设计注意事项。但是,发送的data 是为了完善搜索/查询。所以我不明白为什么不支持它。我猜我能做的不多。
  • 它不被支持,因为它不是这样设计的。就像我说的,如果您必须像这样使用 GET,那么您的数据必须是查询字符串中的参数。
猜你喜欢
  • 1970-01-01
  • 2015-11-22
  • 2014-02-15
  • 2013-03-31
  • 1970-01-01
  • 2015-02-24
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多