1.4. cURL:您的命令行助手

curl 实用程序是一个命令行工具,可在 Unix、Linux、Mac OS X、Windows 和许多其他平台上使用。 curl 提供了直接从命令行访问 HTTP 协议(以及其他协议)的简便方法,因此是通过 HTTP REST API 与 CouchDB 交互的理想方式。

对于简单的 GET 请求,您可以提供请求的 URL。例如,要获取数据库信息

shell> curl http://admin:[email protected]:5984

这将返回数据库信息(在下面的输出中格式化以提高清晰度)

{
  "couchdb": "Welcome",
  "version": "3.0.0",
  "git_sha": "83bdcf693",
  "uuid": "56f16e7c93ff4a2dc20eb6acc7000b71",
  "features": [
    "access-ready",
    "partitioned",
    "pluggable-storage-engines",
    "reshard",
    "scheduler"
  ],
  "vendor": {
    "name": "The Apache Software Foundation"
  }
}

注意

对于某些 URL,尤其是包含特殊字符(如&、!或?)的 URL,您应该在命令行上引用您指定的 URL。例如

shell> curl 'http://couchdb:5984/_uuids?count=5'

注意

在 Microsoft Windows 上,在以下示例中看到单引号的地方使用双引号。在看到单双引号的地方使用双双引号(“”)。例如,如果您看到

shell> curl -X PUT 'http://127.0.0.1:5984/demo/doc' -d '{"motto": "I love gnomes"}'

您应该将其替换为

shell> curl -X PUT "http://127.0.0.1:5984/demo/doc" -d "{""motto"": ""I love gnomes""}"

如果您愿意,可以使用 ^"\" 来转义引号字符串中的双引号字符。

您可以使用 -X 命令行选项显式设置 HTTP 命令。例如,在创建数据库时,您使用 PUT 请求设置发送的 URL 中的数据库名称

shell> curl -X PUT http://user:[email protected]:5984/demo
{"ok":true}

但是,要获取数据库信息,您使用 GET 请求(返回信息格式化以提高清晰度)

shell> curl -X GET http://user:[email protected]:5984/demo
{
    "compact_running" : false,
    "doc_count" : 0,
    "db_name" : "demo",
    "purge_seq" : 0,
    "committed_update_seq" : 0,
    "doc_del_count" : 0,
    "disk_format_version" : 5,
    "update_seq" : 0,
    "instance_start_time" : "0",
    "disk_size" : 79
}

对于某些操作,您必须指定请求的内容类型,您可以通过使用 -H 命令行选项指定 Content-Type 标头来完成此操作

shell> curl -H 'Content-Type: application/json' http://127.0.0.1:5984/_uuids

您还可以提交“有效负载”数据,即使用 -d 选项在 HTTP 请求正文中提交的数据。如果您需要提交 JSON 结构(例如文档数据)作为请求的一部分,这将很有用。例如,要向 demo 数据库提交一个简单文档

shell> curl -H 'Content-Type: application/json' \
            -X POST http://user:[email protected]:5984/demo \
            -d '{"company": "Example, Inc."}'
{"ok":true,"id":"8843faaf0b831d364278331bc3001bd8",
 "rev":"1-33b9fbce46930280dab37d672bbc8bb9"}

在上面的示例中,-d 选项后的参数是我们想要提交的文档的 JSON。

可以使用返回的自动生成的文档 ID 访问该文档

shell> curl -X GET http://user:[email protected]:5984/demo/8843faaf0b831d364278331bc3001bd8
{"_id":"8843faaf0b831d364278331bc3001bd8",
 "_rev":"1-33b9fbce46930280dab37d672bbc8bb9",
 "company":"Example, Inc."}

API 基础 中的 API 示例显示了需要提交的 HTTP 命令、URL 和任何有效负载信息(以及预期的返回值)。所有这些示例都可以使用上面显示的命令行示例使用 curl 复制。