1.4. 你的命令行朋友

这个 curl utility是一个命令行工具,可用于Unix、Linux、Mac OS X、Windows和许多其他平台。 curl 提供直接从命令行对HTTP协议(以及其他协议)的简单访问,因此是通过httprestapi与CouchDB交互的理想方式。

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

shell> curl http://admin:password@127.0.0.1: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'

注解

在microsoftwindows上,在下面的示例中,在任何看到单引号的地方使用双引号。在看到单引号的任何地方使用双引号(“”)。例如,如果您看到:

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 命令行选项。例如,创建数据库时,可以在使用PUT请求发送的URL中设置数据库的名称:

shell> curl -X PUT http://user:pass@127.0.0.1:5984/demo
{"ok":true}

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

shell> curl -X GET http://user:pass@127.0.0.1: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
}

对于某些操作,必须指定请求的内容类型,这可以通过指定 Content-Type 标题使用 -H 命令行选项:

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

您还可以使用 -d 选项。如果您需要将JSON结构(例如文档数据)作为请求的一部分提交,这将非常有用。例如,向 demo 数据库:

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

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

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

shell> curl -X GET http://user:pass@127.0.0.1:5984/demo/8843faaf0b831d364278331bc3001bd8
{"_id":"8843faaf0b831d364278331bc3001bd8",
 "_rev":"1-33b9fbce46930280dab37d672bbc8bb9",
 "company":"Example, Inc."}

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