Запрос React axis post возвращает пустой объект данных, но ПОЧТАЛЬОН возвращает данные

#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