【问题标题】:cURL command to Axios request with json datacURL 命令到带有 json 数据的 Axios 请求
【发布时间】:2019-11-13 23:43:37
【问题描述】:

我已经让这个 cURL 请求在远程界面上完美运行,就像它应该的那样

curl -XGET "https://server.host:8080/peregrine" -d '{"exchanges":["kucoin", "kraken"],"volume":10}' -k

我正在尝试使用 Vue.js 构建一个小的前端应用程序,并且需要将上述内容转换为 Axios 获取请求。 到目前为止,我一直在尝试以下方法:

axios({
      method: 'get',
      url: 'https://server.host/peregrine',
      data: {"exchanges":["kucoin", "kraken"],"volume":10}
    });

使用params 而不是data 使其成为 URL,远程服务器说它没有收到任何数据。

我做错了什么?谢谢。

【问题讨论】:

  • 您是否尝试过使用数据发送POST 请求?
  • 不确定是否可以使用 Axios 发送带有 get 请求的正文(数据)。使用 Postman GET 请求并转换为 Axios 后遇到类似问题。

标签: javascript curl axios


【解决方案1】:

感谢您的回复!

确实没有办法用 axios.get() 发送数据体 我们最终调整了服务器端以接受正常的通用 GET 请求。再次感谢所有回答的人!

【讨论】:

  • -1 我赞成你的问题,因为它显示了努力并且可能有用,但反对这个,因为答案不是评论另一个有效答案的地方。如果评论不充分,您可以编辑原始问题并将其添加到末尾。
【解决方案2】:

问题可能是使用 GET 不能像你正在做的那样传递数据。您必须将它们作为查询参数传递。 尝试更改您的呼叫:

axios.get('https://server.host/peregrine', {
    params: {"exchanges":["kucoin", "kraken"],"volume":10}
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // always executed
  });  

【讨论】:

  • 谢谢!我首先尝试过,服务器不接受,只有json数据。现在我们已经改变了服务器端,你的答案完全有效。
【解决方案3】:

GET 请求不应包含请求正文。

CURL 将允许您使用一个 GET 请求,但 XMLHttpRequest 和 fetch(浏览器中由 axios 包装的 HTTP API)不会。

改为发出 POST 请求。您可能需要更改服务器端代码以支持此功能。

【讨论】:

  • 问题清楚地表明使用了错误的 HTTP 方法;带有正文的 GET 应该是 POST。将 POST 数据推入查询字符串并不总是合适的。即使 OP 没有使用这种方法,这也是正确的答案。
猜你喜欢
  • 1970-01-01
  • 2017-08-14
  • 2021-04-28
  • 2012-05-13
  • 2019-07-07
  • 2014-02-15
  • 2015-04-27
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多