【问题标题】:Receive raw response data using axios使用 axios 接收原始响应数据
【发布时间】:2020-04-14 20:09:09
【问题描述】:

我正在尝试接收raw 响应数据,而不是响应标头或正文。例如,此处的图像显示了找到此数据的选项卡:

现在,我尝试在使用“Axios”发出 HTTP 请求时接收这些数据。这甚至可能吗? 我已经尝试在网上搜索大约 2 个小时,因为这是我面临的一个大问题。我尝试了其他网站,包括堆栈溢出,以获得正确答案。如果可能的话,如果你知道,请你回答我的问题吗?提前致谢。
const axios = require('axios');
const url = 'https://old.reddit.com/api/login?user=username&passwd=password'
function axiosTest() {
    return axios.post(url).then((r) => {
        console.log(r)
    })
}

【问题讨论】:

  • 您可以发布您的代码或您尝试过什么吗?
  • 我正在使用它来发出 Reddit HTTP 请求,并正在与 API 交互
  • 结果是很多不必要的数据,包括标题和正文。
  • 我不熟悉 API 和响应结构。你可以在这里发布回复吗?请屏蔽任何敏感数据

标签: javascript node.js http axios


【解决方案1】:

我很确定您必须访问响应对象r 中的data 属性。另外 - 由于您使用的是 reddit API - 请确保您在请求 url 中提供 api_type(例如 api_type=json):

const axios = require('axios');
const url = 'https://old.reddit.com/api/login?api_type=json&user=username&passwd=password'
function axiosTest() {
    return axios.post(url).then((r) => {
        console.log(r.data)
        return r.data;
    })
}

对于阅读本文的任何人:澄清一下,请求 url 中的 api_type 参数特定于 reddit API,很可能不适用于任何其他 API。

【讨论】:

  • 我已经尝试过了,但它只返回javascript { jquery: [ [ 0, 1, 'call', [Array] ], [ 1, 2, 'attr', 'find' ], [ 2, 3, 'call', [Array] ], [ 3, 4, 'attr', 'hide' ], [ 4, 5, 'call', [] ], [ 5, 6, 'attr', 'html' ], [ 6, 7, 'call', [Array] ], [ 7, 8, 'attr', 'end' ], [ 8, 9, 'call', [] ] ], success: true }
  • 您期待什么响应?您可能会注意到响应中的success 属性是true,这表明您的登录成功。我不熟悉 reddit API...
  • 我期待原始响应数据,如上图所示。是否可以检索这些数据?
  • 您是否在屏幕截图中请求相同的 URL?另外,您是否使用相同的请求方法(POST)?您还可以将浏览器请求发送的标头与您使用 axios 发送的标头进行比较(据我所知没有)。
  • 我使用 XMLHttpRequest 获得了该数据,是的,我对两者都使用 POST。我之所以不使用 XMLHttpRequest 是因为 CORS 和 XSS 保护。
猜你喜欢
  • 2020-10-26
  • 2022-08-14
  • 2020-09-01
  • 1970-01-01
  • 2016-07-10
  • 2021-01-06
  • 1970-01-01
  • 1970-01-01
  • 2019-10-02
相关资源
最近更新 更多