#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. Я сделал именно это, запустил его, и он работал отлично (конечно). Если бы только мы могли заставить компьютеры делать то, что мы хотим, а не то, что мы говорим 😉.