Как я могу видеть адреса, отправляемые через axios в nodejs?

#node.js #axios

#node.js #axios

Вопрос:

Я пытаюсь отправить параметры в веб-API, используя axios в nodejs. Это фрагмент кода, который я пытаюсь использовать:

 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}`);
    }
  })
 

Когда я выполняю вышеуказанное, я всегда получаю код ответа 400 из блока catch.

Итак, мой вопрос заключается в следующем:

Могу ли я отобразить строку, которая отправляется в веб-API? Что-то, что будет выглядеть как этот вывод:

https://api.somedomain.com/v1/?Param1=value1amp;Param2=value2amp;Param3=value3

Извините, если это кажется наивным, но я смог заставить один get получить URL-адрес, который я буду использовать для отправки второго get. Первый get работает, и у меня есть URL. Второй всегда дает мне ответ 400. (Или, возможно, это потому, что я выполнил один запрос get для объекта app, и мне не удалось очистить объект app для подготовки к следующему запросу get?)

Заранее спасибо за ваш ответ.

Питер

Комментарии:

1. Вы правильно хотите использовать параметры запроса (или строку запроса) вместо заголовков.

2. Теперь я чувствую себя особенно глупо. У меня тяжелый случай туннельного зрения, и я искал сложный ответ повсюду. Спасибо за ваш ответ.

3. Может быть, вы можете попробовать это решение из документации 🙂

4. На самом деле, я сделал то, что вы предложили, и это сработало как по волшебству. Я продолжал тестировать с точными параметрами, используя тестовую страницу, и все было отформатировано правильно. Это продолжало меня озадачивать. Как только я изменил «заголовки» на «параметры», это сработало как по волшебству.

Ответ №1:

Измените с headers на params в конфигурации axios:

 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}`);
    }
  })
 

Комментарии:

1. Я сделал именно это, запустил его, и он работал отлично (конечно). Если бы только мы могли заставить компьютеры делать то, что мы хотим, а не то, что мы говорим 😉.