【问题标题】:How to insert data to ArangoDB with HTTP?如何使用 HTTP 向 ArangoDB 插入数据?
【发布时间】:2015-08-10 16:51:43
【问题描述】:

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

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

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

我是否正确理解我应该使用/_api/cursor 仅当我向 DB 发出请求时才使用

{"query": "FOR car IN cars RETURN car"}

【问题讨论】:

    标签: arangodb


    【解决方案1】:

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

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

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

    Cursors 用于通过 REST API 执行 AQL 查询,它们使用POST, PUT and DELETE verbs

    【讨论】:

      【解决方案2】:

      使用命令curl --data-binary @- ... 中的@-,您要求curl 从stdin 读取。这意味着在您按下 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 命令行中无效,因为字符串不应包含在 ' 中,而应包含在 " 中。

      【讨论】:

        猜你喜欢
        • 2020-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2014-12-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多