#reactjs #axios #postman
Вопрос:
Мой запрос axios формируется следующим образом:
const query = JSON.stringify({'username': 'testuser'})
const headers = {'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded'}
useEffect( () => {
axios({
method: 'POST',
headers: headers,
url: 'http://54.158.146.220/FetchSongs.php',
data: query
})
.then(response => {
console.log(response)
})
}, [url])
но отправка этого запроса дает мне ответ 200 без данных, хотя, когда я отправляю его с почтальоном, он показывает данные.
Комментарии:
1. Вы можете сгенерировать код от почтальона и проверить, чем отличаются запросы
2. @Раз Хорошо, но это невозможно сделать в react. Вы видите что-нибудь не так с моим кодом?
Ответ №1:
Вы ничего не получаете в теле, потому что вы неправильно передаете данные , когда Content-Type
application/x-www-form-urlencoded
данные (ваша query
переменная) не должны быть в формате JSON.
application/x-www-form-urlencoded
: ключи и значения кодируются в кортежах ключ-значение, разделенныхamp;
символом a=
между ключом и значением. Не буквенно-цифровые символы как в ключах, так и в значениях закодированы в процентах: именно по этой причине этот тип не подходит для использования с двоичными данными (используйтеmultipart/form-data
вместо этого).Из MDN — ПОСТА
Для передачи данных в нужном формате вы можете использовать URLSearchParams