Проблема с использованием Axios для публикации JSON («переданное значение, а не строка или объект JSON») - PullRequest
3 голосов
/ 07 июня 2019

РЕДАКТИРОВАТЬ: Решено, размещены подробности ниже в качестве ответа ... Довольно глупая ошибка пользователя

Я пытаюсь написать простой плагин для SteelSeries Gamesense для отображения текущей воспроизводимой песни из iTunes на экране GameDAC. В основном движок работает через предоставленный сервер, который прослушивает почтовые запросы в теле JSON. Я пытался заставить мой запрос работать довольно долго, но безуспешно.

Я проверил запрос на Postman, и он должен работать как задумано, так что проблема, вероятно, в синтаксисе.

const axios = require('axios');


const coreProps = require(process.env.ProgramData + '/SteelSeries/SteelSeries Engine 3/coreProps.json');
const url = JSON.stringify(coreProps['address']);

axios.defaults.baseURL = 'http://' + url.replace(/"/g,'');
axios.defaults.headers['post'] = {'Content-Type': 'application/json'};

console.log(axios.defaults.headers);

function bind_itunes() {

    const data = {
        "game": "ITUNES",
        "event": "NOWPLAYING",
        "handlers": [
            {
                "device-type": "screened",
                "zone": "one",
                "mode": "screen",
                "datas": [
                    {
                        "has-text": true,
                        "context-frame-key": "songname"
                    }
                ]
            }
        ]
    };

    axios.post('game_event', JSON.stringify(data))
        .then((res) => {
            console.log(res)
        }).catch((error) => {
        console.error(error)
    })
}

bind_itunes();

Сбой кода с длинным блоком ошибок от Axios с ошибкой

"data: { error: 'passed value not string or JSON object' } }"

полный журнал ошибок (pastebin, поскольку он довольно длинный): https://pastebin.com/aLguKQ2C

Скриншот почтальона

enter image description here

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

В следующий раз, прежде чем задавать вопрос, я также обязательно проверю конечные точки API.

Как видно при сравнении скриншота и кода, я опрашиваю не ту конечную точку (game_event вместо bind_game_event), что, очевидно, приводит к тому, что запрос будет плохим.

Исправлена ​​проблема после часов и часов удивления.

Спасибо за помощь всем, кто пытался и извините, что беспокою.

2 голосов
/ 07 июня 2019

Я бы предложил то же самое, что и @Phil: не структурировать вашу полезную нагрузку при использовании axios.post. Примеры в документации Axios могут быть полезны: https://github.com/axios/axios. Я посмотрел на ваш скриншот, кажется, что вы получили успешный ответ с кодом состояния 200. У вас все еще есть проблема или ответ по вашему запросу разные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...