如何使用 HTTP 向 ArangoDB 插入数据?

How to insert data to ArangoDB with HTTP?

你能帮我理解如何在现有集合中插入数据吗?集合名称是汽车。我正在尝试向其中插入新数据。我这样做:

curl -X PUT --data-binary @- --dump - http://localhost:8529/_db/testdb/_api/collection/cars/ '{name: "carname"}'

但是之后什么也没有发生。看起来我错过了语法。

我是否正确理解我应该仅在像

这样向数据库发出请求时才使用 /_api/cursor
{"query": "FOR car IN cars RETURN car"}

如果要将新数据插入现有集合,则必须使用 POST 动词,例如:

curl -X POST -d "{ \"field\": \"value\" }" --dump - http://localhost:8529/_db/myDatabase/_api/document?collection=cars

PUT 动词用于替换现有文档。更多示例可以在 Working with Documents using REST.

下的文档中找到

Cursors are used for executing AQL queries through REST API and they use POST, PUT and DELETE verbs.

使用命令 curl --data-binary @- ... 中的 @-,您要求 curl 从标准输入读取。这意味着在您按下 CTRL-D 之前,该命令不会执行任何操作并且不会完成。但是,如果您按 CTRL-D,它会将数据发送到服务器。

可以指定要发送的数据而无需从标准输入读取。这可以通过 curl --data-binary <data> 完成,<data> 是要发送的 JSON。请注意,它需要有效 JSON 并在您使用的 shell 中正确转义。上述示例中的 '{name: "carname"}' 不正确 JSON(属性名称 name 周围的引号缺失)。它应该是 '{"name": "carname"}'

正如@yojimbo87 指出的那样,插入操作应该通过 HTTP POST 而不是 PUT 发送,集合名称应该作为 URL 参数传递。

完整命令如下:

curl -X POST --data-binary '{"name": "carname"}' --dump - "http://localhost:8529/_db/testdb/_api/document?collection=cars"

以上内容在 Bash 中有效,但是在 Windows 命令行中无效,因为那里的字符串不应包含在 ' 中,而是".