我不能理解我做错了什么,但是当我用curl发送下一个请求时,我得到了错误:
echo {"id":1,"question":"aaa"},{"id":2,"question":"bbb?"} | curl -X POST --data-binary @- --dump - http://localhost:8529/_db/otest/_api/document/?collection=sitetestanswers
HTTP/1.1 100 (Continue)
HTTP/1.1 400 Bad Request
Server: ArangoDB
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Content-Length: 100
{"error":true,"errorMessage":"failed to parse json object: expecting EOF","code":400,"errorNum":600}
有办法吗?我把它绑在[
上了... ]
.没有什么是没有帮助的。关于[
]
验证程序将此标记为有效
与D相同。下面是我的代码:
void sendQuestionsToArangoDB(Json questions)
{
string collectionUrl = "http://localhost:8529/_db/otest/_api/document/?collection=sitetestanswers";
auto rq = Request();
rq.verbosity = 2;
string s = `{"id":"1","question":"foo?"},{"id":2}`;
auto rs = rq.post(collectionUrl, s, "application/json");
writeln("SENDED");
}
--
POST /_db/otest/_api/document/?collection=sitetestanswers HTTP/1.1
Content-Length: 37
Connection: Close
Host: localhost:8529
Content-Type: application/json
HTTP/1.1 400 Bad Request
Server: ArangoDB
Connection: Close
Content-Type: application/json; charset=utf-8
Content-Length: 100
100 bytes of body received
对于D,我使用这个库:https://github.com/ikod/dlang-requests与vibed相同的问题。
3条答案
按热度按时间7vhp5slm1#
ArangoDB不理解JSON,如果它是像
[...]
这样的数组。它应该作为key-value传递。所以如果你需要传递数组,它应该有键mykey : []
。下面是工作代码:
otest
-数据库名称sitetestanswers
-集合名称(应在DB中创建)j2datikz2#
应该可以你需要在JSON周围打勾。数组括号是必要的,否则这不是有效的JSON。
ttp71kqs3#
您正在尝试发送多个文档。原始问题中的数据用逗号(
{"id":1,"question":"aaa"},{"id":2,"question":"bbb?"}
)分隔文档,这是无效的JSON。因此,来自ArangoDB的failed to parse json object
答案。按照一些评论者的建议,将文档放入尖括号(
[ ... ]
)中,将使请求有效负载再次有效。但是,您将数据发送到处理 * 单个 * 文档的服务器端点。POST
/_api/document/?collection=...
的API目前一次接受一个文档。它不能在一个请求中处理多个文档。它期望一个JSON对象,每当它被发送不同的东西时,它都会响应一个错误代码。如果您正在寻找批量插入,请尝试API POST
/_api/import
,在手册中描述如下:https://docs.arangodb.com/3.11/develop/http/import/这将在单个请求中处理多个文档。ArangoDB 3.0还将允许向POST
/_api/document?collection=...
API发送多个文档,但该版本尚未发布。技术预览将很快推出。