首页 > 解决方案 > 如何在 nodejs 中查看通过 axios 发送的地址?

问题描述

我正在尝试使用 nodejs 中的 axios 将参数发送到 Web API。这是我尝试使用的代码片段:

const app = require('axios');

app.get("https://api.somedomain.com/v1/", {
  headers: {
    Param1: 'value1',
    Param2: 'value2',
    Param3: 'value3'
  }
})
  .then((res) => {
    console.log("Executing 'then' block");  // never executes
  })
  .catch((err) => {
    if (err.response) {
      console.log(`response.status: ${err.response.status}`);
    } else if(err.request) {
      console.log(`request.status: ${err.request.status}`);
    }
  })

当我执行上述操作时,我总是从 catch 块中获得响应代码 400。

所以我的问题是:

我可以显示发送到 Web API 的字符串吗?看起来像这样的输出:

https://api.somedomain.com/v1/?Param1=value1&Param2=value2&Param3=value3

抱歉,如果这看起来很幼稚,但我已经能够让一个 get 检索一个我将用来发送第二个 get 的 URL。第一个 get 工作,我有 URL。第二个总是给我 400 响应。(或者,是不是因为我对 app 对象执行了一个 get 请求,而我没有清理 app 对象为下一个 get 请求做准备?)

提前感谢您的回复。

彼得

标签: node.jsaxios

解决方案


在 axios 配置中从 更改headers为:params

const app = require('axios');

app.get("https://api.somedomain.com/v1/", {
  params: { // HERE IS THE CHANGE!
    Param1: 'value1',
    Param2: 'value2',
    Param3: 'value3'
  }
})
  .then((res) => {
    console.log("Executing 'then' block");  // never executes
  })
  .catch((err) => {
    if (err.response) {
      console.log(`response.status: ${err.response.status}`);
    } else if(err.request) {
      console.log(`request.status: ${err.request.status}`);
    }
  })

推荐阅读