Выполняется следующая команда из командной строки Windows с использованием cURL, пытающегося отправить новый документ в существующую базу данных CouchDB (с именем test):
curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"valid":"json"}
Он возвращает ошибку:
{"error":"bad_request","reason":"invalid_json"}
JSON действительно, что дает?
Ответ 1
Ответ связан с форматированием строки JSON в командной строке. Даже если это правильный JSON, когда вы вводите его, командная строка, похоже, должна переформатировать его перед отправкой. (Возможно, кто-то еще может объяснить, почему он делает это более подробно.) Чтобы исправить это, вам нужно избежать котировок в командной строки:
curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"""valid""":"""json"""}
См. дополнительные кавычки? Это должно работать и возвращать "ok: true" с идентификатором и номером ревизии.
Ответ 2
Вы должны процитировать также весь оператор для поддержки таких пространств, как: -d "{\" title\ ": \" Нет ничего, что можно было бы потерять \ ", \" artist\ ": \" Foo Fighters\ "}"