CouchDB - Curl e Futon

Utilitário cURL

O utilitário cURL é uma maneira de se comunicar com o CouchDB.

É uma ferramenta para transferir dados de ou para um servidor, usando um dos protocolos suportados (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP ou FILE). O comando foi projetado para funcionar sem interação do usuário. cURL oferece muitos truques úteis, como suporte de proxy, autenticação de usuário, upload de ftp, post HTTP, conexões SSL (https :), cookies, retomada de transferência de arquivo e muito mais.

O utilitário cURL está disponível em sistemas operacionais como UNIX, Linux, Mac OS X e Windows. É um utilitário de linha de comando em que o usuário pode acessar o protocolo HTTP diretamente da linha de comando. Este capítulo ensina como usar o utilitário cURL.

Usando o utilitário cURL

Você pode acessar qualquer site da Web usando o utilitário cURL simplesmente digitando cURL seguido do endereço do site conforme mostrado abaixo -

curl www.tutorialspoint.com/

Por padrão, o utilitário cURL retorna o código-fonte da página solicitada. Ele exibe esse código na janela do terminal.

Opções do utilitário cURL

O utilitário cURL oferece várias opções de trabalho e você pode vê-las na ajuda do utilitário cURL.

O código a seguir mostra parte da ajuda do 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

Durante a comunicação com o CouchDB, certas opções do utilitário cURL foram amplamente utilizadas. A seguir estão as breves descrições de algumas opções importantes do utilitário cURL, incluindo aquelas usadas pelo CouchDB.

-X bandeira

(HTTP) Especifica um método de solicitação personalizado usado ao se comunicar com o servidor HTTP. A solicitação especificada é usada em vez do método usado de outra forma (cujo padrão é GET). Leia a especificação HTTP 1.1 para obter detalhes e explicações.

(FTP) Especifica um comando FTP personalizado a ser usado em vez de LIST ao fazer listas de arquivos com ftp.

-H

(HTTP) Cabeçalho extra é usado ao obter uma página da web. Observe que se você adicionar um cabeçalho personalizado com o mesmo nome de um dos internos que cURL usaria, seu cabeçalho definido externamente será usado em vez do interno. Isso permite que você faça um trabalho ainda mais complicado do que normalmente faria o cURL. Você não deve substituir os cabeçalhos definidos internamente sem saber perfeitamente o que está fazendo. Substituir um cabeçalho interno por um sem conteúdo no lado direito dos dois pontos evitará que o cabeçalho apareça.

cURL garante que cada cabeçalho adicionado / substituído seja enviado com o marcador de fim de linha adequado. Nem você deve adicionar isso como parte do conteúdo do cabeçalho, nem adicionar novas linhas ou retornos de carro para desordenar as coisas.

Consulte também as opções -A / - user-agent e -e / - referer.

Esta opção pode ser usada várias vezes para adicionar / substituir / remover vários cabeçalhos.

-d bandeira

Usando este sinalizador de cURL, você pode enviar dados junto com a solicitação HTTP POST para o servidor, como se tivesse sido preenchido pelo usuário no formulário e enviado.

Example

Suponha que haja um site e você deseja fazer login nele ou enviar alguns dados para o site usando o sinalizador –d do utilitário cURL, conforme mostrado abaixo.

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

Ele envia um post chunk que parece "userid=001&password=tutorialspoint". Da mesma forma, você também pode enviar documentos (JSON) usando o sinalizador -d.

-o bandeira

Usando este sinalizador, cURL grava a saída da solicitação em um arquivo.

Example

O exemplo a seguir mostra o uso de -o sinalizador do utilitário cURL.

$ curl -o example.html www.tutorialspoint.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

Isso obtém o código-fonte da página inicial de tutorialspoint.com, cria um arquivo denominado example.com e salva a saída no arquivo denominado example.html.

A seguir está o instantâneo do example.html.

-O

Esta bandeira é semelhante a –o, a única diferença é com este sinalizador, um novo arquivo com o mesmo nome da url solicitada foi criado, e o código-fonte da url solicitada será copiado para ele.

Example

O exemplo a seguir mostra o uso de -O sinalizador do utilitário cURL.

$ curl -O www.tutorialspoint.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

Ele cria um novo arquivo com o nome index.htm e salva o código-fonte da página de índice de tutorialspoint.com nele.

Olá CouchDB

Você pode acessar a página inicial do CouchDB enviando uma solicitação GET para a instância do CouchDB instalada. Em primeiro lugar, certifique-se de ter instalado o CouchDB em seu ambiente Linux e de se ele está sendo executado com êxito e, em seguida, use a seguinte sintaxe para enviar uma solicitação get à instância do CouchDB.

curl http://127.0.0.1:5984/

Isso fornece um documento JSON, conforme mostrado abaixo, em que o CouchDB especifica os detalhes, como número da versão, nome do fornecedor e versão do software.

$ 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"
   }
}

Lista de todos os bancos de dados

Você pode obter a lista de todos os bancos de dados criados, enviando uma solicitação get junto com a string "_all_dbs string ". A seguir está a sintaxe para obter a lista de todos os bancos de dados no CouchDB.

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

Ele fornece a lista de todos os bancos de dados no CouchDB conforme mostrado abaixo.

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

Criando um banco de dados

Você pode criar um banco de dados no CouchDB usando cURL com o cabeçalho PUT usando a seguinte sintaxe -

$ curl -X PUT http://127.0.0.1:5984/database_name

Exemplo

Como exemplo, usando a sintaxe fornecida acima, crie um banco de dados com o nome my_database como mostrado abaixo.

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

Verificação

Verifique se o banco de dados foi criado, listando todos os bancos de dados conforme mostrado abaixo. Aqui você pode observar o nome do banco de dados recém-criado,"my_database" na lista

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

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

Obtendo informações do banco de dados

Você pode obter as informações sobre o banco de dados usando a solicitação get junto com o nome do banco de dados. A seguir está a sintaxe para obter as informações do banco de dados.

Exemplo

Como exemplo, vamos obter as informações do banco de dados chamado my_databasecomo mostrado abaixo. Aqui você pode obter as informações sobre seu banco de dados como uma resposta.

$ 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 é a interface de administração integrada baseada na web do CouchDB. Ele fornece uma interface gráfica simples com a qual você pode interagir com o CouchDB. É uma interface ingênua e fornece acesso total a todos os recursos do CouchDB. A seguir está a lista desses recursos -

Databases −
  • Cria bancos de dados.
  • Destrói bancos de dados.
Documents −
  • Cria documentos.
  • Atualiza documentos.
  • Edita documentos.
  • Exclui documentos.

Futon inicial

Certifique-se de que o CouchDB esteja em execução e abra o seguinte url no navegador -

http://127.0.0.1:5984/_utils/

Se você abrir este url, ele exibe a página inicial do Futon conforme mostrado abaixo -

  • No lado esquerdo desta página você pode observar a lista de todos os bancos de dados atuais do CouchDB. Nesta ilustração, temos um banco de dados chamadomy_database, junto com bancos de dados definidos pelo sistema _replicator e _user.

  • No lado direito você pode ver o seguinte -

    • Tools - Nesta seção você pode encontrar Configuration para configurar o CouchDB, Replicator para realizar replicações, e Status para verificar o status do CouchDB e as modificações recentes feitas no CouchDB.

    • Documentation - Esta seção contém a documentação completa da versão recente do CouchDB.

    • Diagnostics - Sob este você pode verificar a instalação do CouchDB.

    • Recent Databases - Abaixo, você pode encontrar os nomes dos bancos de dados adicionados recentemente.