CouchDB Curl和Futon


cURL 实用程序是一种与 CouchDB 通信的方式。

它是一种使用支持​​的协议(HTTP、HTTPS、FTP、FTPS、TFTP、DICT、TELNET、LDAP 或 FILE)之一从服务器传输数据或向服务器传输数据的工具。该命令旨在无需用户交互即可工作。 cURL 提供了大量有用的技巧,如代理支持、用户身份验证、ftp 上传、HTTP 发布、SSL (https:) 连接、cookie、文件传输恢复等。

cURL 实用程序可用于 UNIX、Linux、Mac OS X 和 Windows 等操作系统。它是一个命令行实用程序,用户可以使用它直接从命令行访问 HTTP 协议。本章教你如何使用 cURL 实用程序。

使用 cURL 实用程序


你可以使用 cURL 实用程序访问任何网站,只需键入 cURL 后跟网站地址,如下所示:

curl www.newbiego.com/

默认情况下,cURL 实用程序返回所请求页面的源代码。它在终端窗口上显示此代码。

cURL 实用程序选项


cURL 实用程序提供了各种可供使用的选项,你可以在 cURL 实用程序帮助中查看它们。

以下代码显示了 cURL 帮助的某些部分。

$ curl --help
Usage: curl [options...] <url>
Options: (H) means HTTP/HTTPS only, (F) means FTP only
        --anyauth Pick "any" authentication method (H)
    -a/--append Append to target file when uploading (F/SFTP)
        --basic Use HTTP Basic Authentication (H)
        --cacert <file> CA certificate to verify peer against (SSL)
-d/--data <data> HTTP POST data (H)
        --data-ascii <data> HTTP POST ASCII data (H)
        --data-binary <data> HTTP POST binary data (H)
        --data-urlencode <name=data/name@filename> HTTP POST data
urlencoded (H)
        --delegation STRING GSS-API delegation permission
        --digest Use HTTP Digest Authentication (H)
        --disable-eprt Inhibit using EPRT or LPRT (F)
        --disable-epsv Inhibit using EPSV (F)

    -F/--form <name=content> Specify HTTP multipart POST data (H)
        --form-string <name=string> Specify HTTP multipart POST data (H)
        --ftp-account <data> Account data to send when requested by server
(F)
        --ftp-alternative-to-user <cmd> String to replace "USER [name]" (F)
        --ftp-create-dirs Create the remote dirs if not present (F)
        --ftp-method [multi cwd/no cwd/single cwd] Control CWD usage (F)
        --ftp-pasv Use PASV/EPSV instead of PORT (F)

    -G/--get Send the -d data with a HTTP GET (H)

    -H/--header <line> Custom header to pass to server (H)
    -I/--head Show document info only
    -h/--help This help text
        --hostpubmd5 <md5> Hex encoded MD5 string of the host public key.
(SSH)
    -0/--http1.0 Use HTTP 1.0 (H)
        --ignore-content-length Ignore the HTTP Content-Length header
    -i/--include Include protocol headers in the output (H/F)

    -M/--manual Display the full manual

    -o/--output <file> Write output to <file> instead of stdout
        --pass <pass> Pass phrase for the private key (SSL/SSH)
        --post301 Do not switch to GET after following a 301
redirect (H)
        --post302 Do not switch to GET after following a 302
redirect (H)
    -O/--remote-name Write output to a file named as the remote file
        --remote-name-all Use the remote file name for all URLs
    -R/--remote-time Set the remote file's time on the local output
    -X/--request <command> Specify request command to use
        --retry <num> Retry request <num> times if transient problems
occur
        --retry-delay <seconds> When retrying, wait this many seconds
between each
        --retry-max-time <seconds> Retry only within this period
    -T/--upload-file <file> Transfer <file> to remote site
        --url <URL> Set URL to work with
    -B/--use-ascii Use ASCII/text transfer

在与 CouchDB 通信时,cURL 实用程序的某些选项被广泛使用。以下是 cURL 实用程序的一些重要选项的简要说明,包括 CouchDB 使用的选项。

-X flag

(HTTP) 指定与 HTTP 服务器通信时使用的自定义请求方法。使用指定的请求而不是其他使用的方法(默认为 GET)。阅读 HTTP 1.1 规范以获取详细信息和解释。

(FTP) 指定使用 ftp 进行文件列表时使用的自定义 FTP 命令而不是 LIST。

-H

(HTTP) 获取网页时使用额外的标头。请注意,如果你添加一个与内部标题之一同名的自定义标题,cURL 将 使用,你的外部设置的标题将被使用而不是内部的。这使你可以进行比 cURL 通常做的更复杂的工作。在不完全了解自己在做什么的情况下,不应替换内部设置的标题。将内部标题替换为冒号右侧没有内容的标题,将阻止该标题出现。

cURL 确保你添加/替换的每个标头都使用正确的行尾标记发送。你既不应将其添加为标题内容的一部分,也不应将换行符或回车添加到混乱的事物中。

另请参阅 -A/--user-agent 和 -e/--referer 选项。

此选项可以多次使用以添加/替换/删除多个标题。

-d flag

使用 cURL 的这个标志,你可以将数据与 HTTP POST 请求一起发送到服务器,就好像它是由用户在表单中填写并提交一样。

例子

假设有一个网站,你想登录该网站或使用 cURL 实用程序的 -d 标志向该网站发送一些数据,如下所示。

curl -X PUT http:// mywebsite.com/login.html -d userid=001 -d password=newbiego

它发送一个看起来像的帖子块 “用户 ID=001&密码=教程点” .同样,你也可以使用 -d 标志发送文档 (JSON)。

-o flag

使用此标志,cURL 将请求的输出写入文件。

例子

下面的例子展示了使用 -o cURL 实用程序的标志。

$ curl -o example.html www.newbiego.com/index.htm 
% Total % Received % Xferd Average Speed Time Time Time Current 
        Dload Upload Total Spent Left Speed
100 81193 0 81193 0 0 48168 0 --:--:-- 0:00:01 --:--:--
58077

这将获取 newbiego.com 主页的源代码,创建名为 example.com 的文件并将输出保存在名为 example.html 的文件中。

以下是截图 例子.html .

例子 Html

-O

这个标志类似于 –o ,唯一的区别是这个标志,一个与请求的url同名的新文件被创建,请求的url的源代码将被复制到它。

例子

下面的例子展示了使用 -O cURL 实用程序的标志。

$ curl -O www.newbiego.com/index.htm
% Total % Received % Xferd Average Speed Time Time Time Current
        Dload Upload Total Spent Left
Speed
100 81285 0 81285 0 0 49794 0 --:--:-- 0:00:01 --:--:--
60077

它创建一个名为 index.htm 的新文件,并将 newbiego.com 的索引页面的源代码保存在其中。

你好沙发数据库


你可以通过向已安装的 CouchDB 实例发送 GET 请求来访问 CouchDB 的主页。首先确保你已经在 Linux 环境中安装了 CouchDB 并且它运行成功,然后使用以下语法向 CouchDB 实例发送 get 请求。

curl http:// 127.0.0.1:5984/

这将为你提供如下所示的 JSON 文档,其中 CouchDB 指定详细信息,例如版本号、供应商名称和软件版本。

$ curl http:// 127.0.0.1:5984/
{
    "couchdb" : "Welcome",
    "uuid" : "8f0d59acd0e179f5e9f0075fa1f5e804",
    "version" : "1.6.1",
    "vendor" : {
        "name":"The Apache Software Foundation",
        "version":"1.6.1"
    }
}

所有数据库列表


你可以通过发送 get 请求和字符串来获取创建的所有数据库的列表 “_all_dbs 字符串” .以下是获取 CouchDB 中所有数据库列表的语法。

curl -X GET http:// 127.0.0.1:5984/_all_dbs

它为你提供了 CouchDB 中所有数据库的列表,如下所示。

$ curl -X GET http:// 127.0.0.1:5984/_all_dbs
[ "_replicator" , "_users" ]

创建数据库


你可以使用带有 PUT 标头的 cURL 在 CouchDB 中创建数据库,语法如下:

$ curl -X PUT http:// 127.0.0.1:5984/数据库名称

例子

例如,使用上面给定的语法创建一个名称为 我的数据库 如下所示。

$ curl -X PUT http:// 127.0.0.1:5984/my_database
{"ok":true}

确认

通过列出所有数据库来验证是否创建了数据库,如图所示 以下。在这里你可以观察到新创建的数据库的名称, “我的数据库” 在列表中

$ curl -X GET http:// 127.0.0.1:5984/_all_dbs

[ "_replicator " , "_users" , "my_database" ]

获取数据库信息


你可以使用 get 请求以及数据库名称来获取有关数据库的信息。以下是获取数据库信息的语法。

例子

作为一个例子,让我们获取名为的数据库的信息 我的数据库 如下所示。在这里,你可以获取有关你的数据库的信息作为响应。

$ curl -X GET http:// 127.0.0.1:5984/my_database

{
    "db_name" : "my_database",
    "doc_count" : 0,
    "doc_del_count" : 0,
    "update_seq" : 0,
    "purge_seq" : 0,
    "compact_running" : false,
    "disk_size" : 79,
    "data_size" : 0,
    "instance_start_time" : "1423628520835029",
    "disk_format_version" : 6,
    "committed_update_seq" : 0
 }

Futon


Futon 是 CouchDB 的内置、基于 Web 的管理界面。它提供 一个简单的图形界面,你可以使用它与 CouchDB 进行交互。这是一个简单的界面,它提供对所有 CouchDB 功能的完全访问。以下是这些功能的列表:

数据库:
  • 创建数据库。
  • 破坏数据库。
文件:
  • 创建文档。
  • 更新文档。
  • 编辑文档。
  • 删除文档。

开始被褥


确保 CouchDB 正在运行,然后在浏览器中打开以下 url:

http:// 127.0.0.1:5984/_utils/

打开这个网址,会显示被褥主页,如下图:

Futon Homepage
  • 在此页面的左侧,你可以看到 CouchDB 当前所有数据库的列表。在此图中,我们有一个名为 我的数据库 ,以及系统定义的数据库 _replicator and _user .

  • 在右侧,你可以看到以下内容:

    • Tools : 在这个部分你可以找到 配置 配置 CouchDB, 复制器 执行复制,以及 Status 验证 CouchDB 的状态和最近在 CouchDB 上所做的修改。

    • 文档 : 本节包含最新版本 CouchDB 的完整文档。

    • 诊断 : 在此可以验证CouchDB的安装。

    • 最近的数据库 : 在这下面可以找到最近添加的数据库的名称。