20

使用 cURL 从 Windows 命令行运行以下命令,尝试将新文档发布到现有 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 是有效的,那么给出了什么?

4

2 回答 2

18

答案与命令行中 JSON 字符串的格式有关。即使您键入它时它是正确的 JSON,命令行似乎必须在发送它之前重新格式化它。(也许其他人可以更详细地解释它为什么这样做。)要解决这个问题,您需要在命令行如下:

curl -H "Content-Type: application/json" -X POST "http://127.0.0.1:5984/test" -d {"""valid""":"""json"""}

看到多余的引号了吗?这应该可以工作并返回带有 id 和修订号的“ok:true”。

于 2013-08-19T13:17:39.487 回答
5

您还必须引用整个声明以支持空格,例如: -d "{\"title\":\"There is Nothing Left to Lose\" , \"artist\":\"Foo Fighters\"}"

于 2014-09-25T12:17:34.110 回答