«Неверные учетные данные» при выполнении POST - PullRequest
0 голосов
/ 27 июня 2018

У меня есть запрос curl в формате ниже

curl -v -H "Content-Type:application/json" -H "x-user-id:xxx" -H "x-api-key:yyy" --data '{"logs":"'"${TEST_OUTPUT}"'","pass":"true | false"}' https://razeedash.one.qqq.cloud.com/api/v1/clusters/zzz/api/test_results

Это работает нормально, пока я работаю с моего терминала MAC. Но эта же команда выбрасывает

13:49:26 {
13:49:26   "status": "error",
13:49:26   "message": "Invalid credentials"
13:49:26 }

Я видел этот пост , но не уверен, как еще я отправлю тело json без фигурных скобок. Я знаю, что мы можем сохранить его как файл .json и использовать файл как тело. Но по некоторым причинам, которые не могут быть реализованы в моем сценарии

1 Ответ

0 голосов
/ 27 июня 2018

В общем, вам следует избегать попыток построить JSON с использованием строковой интерполяции. Используйте инструмент типа jq для обработки любых необходимых цитат.

jq -n --argson o "$TEST_OUTPUT" '{logs: $o, pass: "true | false"}' |
    curl -v -H "Content-Type:application/json" \
            -H "x-user-id:xxx" \
            -H "x-api-key:yyy" \
            --data @- \
            https://razeedash.one.qqq.cloud.com/api/v1/clusters/zzz/api/test_results

Однако, если вам удастся правильно сгенерировать JSON, как сейчас, вы можете просто заменить команду jq на echo:

echo '{"logs": ...' | curl ...

Аргумент @- для --data говорит о необходимости читать со стандартного ввода.

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