CouchDB - Curl e Futon

cURL Utility

L'utilità cURL è un modo per comunicare con CouchDB.

È uno strumento per trasferire dati da o verso un server, utilizzando uno dei protocolli supportati (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP o FILE). Il comando è progettato per funzionare senza l'interazione dell'utente. cURL offre un sacco di trucchi utili come supporto proxy, autenticazione utente, caricamento ftp, post HTTP, connessioni SSL (https :), cookie, ripristino del trasferimento di file e altro.

L'utilità cURL è disponibile nei sistemi operativi come UNIX, Linux, Mac OS X e Windows. È un'utilità della riga di comando che consente all'utente di accedere al protocollo HTTP direttamente dalla riga di comando. Questo capitolo ti insegna come usare l'utility cURL.

Utilizzo dell'utilità cURL

È possibile accedere a qualsiasi sito Web utilizzando l'utilità cURL semplicemente digitando cURL seguito dall'indirizzo del sito Web come mostrato di seguito -

curl www.tutorialspoint.com/

Per impostazione predefinita, l'utilità cURL restituisce il codice sorgente della pagina richiesta. Visualizza questo codice nella finestra del terminale.

Opzioni dell'utilità cURL

L'utilità cURL fornisce varie opzioni con cui lavorare e puoi vederle nella guida dell'utilità cURL.

Il codice seguente mostra una parte dell'help di 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/[email protected]> 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 la comunicazione con CouchDB, alcune opzioni dell'utilità cURL sono state ampiamente utilizzate. Di seguito sono riportate le brevi descrizioni di alcune importanti opzioni dell'utilità cURL, comprese quelle utilizzate da CouchDB.

-X bandiera

(HTTP) Specifica un metodo di richiesta personalizzato utilizzato durante la comunicazione con il server HTTP. La richiesta specificata viene utilizzata al posto del metodo altrimenti utilizzato (il cui valore predefinito è GET). Leggi la specifica HTTP 1.1 per dettagli e spiegazioni.

(FTP) Specifica un comando FTP personalizzato da utilizzare al posto di LIST quando si eseguono elenchi di file con ftp.

-H

(HTTP) L'intestazione aggiuntiva viene utilizzata quando si ottiene una pagina web. Nota che se aggiungi un'intestazione personalizzata che ha lo stesso nome di una di quelle interne che cURL userebbe, verrà usata la tua intestazione impostata esternamente al posto di quella interna. Questo ti permette di fare un lavoro ancora più complicato di quello che farebbe normalmente cURL. Non dovresti sostituire le intestazioni impostate internamente senza sapere perfettamente cosa stai facendo. La sostituzione di un'intestazione interna con quella senza contenuto sul lato destro dei due punti impedirà la visualizzazione di tale intestazione.

cURL assicura che ogni intestazione che aggiungi / sostituisci venga inviata con il marcatore di fine riga corretto. Né dovresti aggiungerlo come parte del contenuto dell'intestazione né aggiungere nuove righe o ritorni a capo alle cose di disordine.

Vedi anche le opzioni -A / - user-agent e -e / - referer.

Questa opzione può essere utilizzata più volte per aggiungere / sostituire / rimuovere più intestazioni.

-d flag

Utilizzando questo flag di cURL, è possibile inviare dati insieme alla richiesta HTTP POST al server, come se fosse stato compilato dall'utente nel modulo e inviato.

Example

Supponiamo che ci sia un sito Web e che si desideri accedere o inviare alcuni dati al sito Web utilizzando il flag –d dell'utilità cURL come mostrato di seguito.

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

Invia un pezzo di post che assomiglia "userid=001&password=tutorialspoint". Allo stesso modo puoi anche inviare documenti (JSON) usando il flag -d.

-o bandiera

Usando questo flag, cURL scrive l'output della richiesta in un file.

Example

L'esempio seguente mostra l'uso di -o flag dell'utilità 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

Questo ottiene il codice sorgente della homepage di tutorialspoint.com, crea un file chiamato example.com e salva l'output nel file chiamato example.html.

Di seguito è riportata l'istantanea del file example.html.

-O

Questa bandiera è simile a –o, l'unica differenza è con questo flag, è stato creato un nuovo file con lo stesso nome dell'URL richiesto e il codice sorgente dell'URL richiesto verrà copiato su di esso.

Example

L'esempio seguente mostra l'uso di -O flag dell'utilità 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

Crea un nuovo file con il nome index.htm e salva il codice sorgente della pagina indice di tutorialspoint.com in esso.

Ciao CouchDB

È possibile accedere alla home page di CouchDB inviando una richiesta GET all'istanza CouchDB installata. Prima di tutto assicurati di aver installato CouchDB nel tuo ambiente Linux e che funzioni correttamente, quindi utilizza la seguente sintassi per inviare una richiesta get all'istanza CouchDB.

curl http://127.0.0.1:5984/

Questo ti dà un documento JSON come mostrato di seguito dove CouchDB specifica i dettagli come il numero di versione, il nome del fornitore e la versione del 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"
   }
}

Elenco di tutti i database

È possibile ottenere l'elenco di tutti i database creati, inviando una richiesta get insieme alla stringa "_all_dbs string ". Di seguito è riportata la sintassi per ottenere l'elenco di tutti i database in CouchDB.

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

Ti dà l'elenco di tutti i database in CouchDB come mostrato di seguito.

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

Creazione di un database

Puoi creare un database in CouchDB usando cURL con l'intestazione PUT usando la seguente sintassi:

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

Esempio

Ad esempio, utilizzando la sintassi sopra indicata creare un database con nome my_database come mostrato di seguito.

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

Verifica

Verificare se il database è stato creato, elencando tutti i database come mostrato di seguito. Qui puoi osservare il nome del database appena creato,"my_database" nella lista

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

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

Ottenere informazioni sul database

È possibile ottenere le informazioni sul database utilizzando la richiesta get insieme al nome del database. Di seguito è riportata la sintassi per ottenere le informazioni sul database.

Esempio

A titolo di esempio, otteniamo le informazioni del database denominato my_databasecome mostrato di seguito. Qui puoi ottenere le informazioni sul tuo database come risposta.

$ 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 è l'interfaccia di amministrazione incorporata, basata sul web, di CouchDB. Fornisce una semplice interfaccia grafica che consente di interagire con CouchDB. È un'interfaccia ingenua e fornisce pieno accesso a tutte le funzionalità di CouchDB. Di seguito è riportato l'elenco di queste funzionalità:

Databases −
  • Crea database.
  • Distrugge i database.
Documents −
  • Crea documenti.
  • Aggiorna i documenti.
  • Modifica i documenti.
  • Elimina i documenti.

Avvio Futon

Assicurati che CouchDB sia in esecuzione e quindi apri il seguente URL nel browser -

http://127.0.0.1:5984/_utils/

Se apri questo URL, viene visualizzata la home page di Futon come mostrato di seguito -

  • Sul lato sinistro di questa pagina puoi osservare l'elenco di tutti i database correnti di CouchDB. In questa illustrazione, abbiamo un database denominatomy_database, insieme ai database definiti dal sistema _replicator e _user.

  • Sul lato destro puoi vedere quanto segue:

    • Tools - In questa sezione puoi trovare Configuration per configurare CouchDB, Replicator per eseguire repliche e Status per verificare lo stato di CouchDB e le recenti modifiche apportate su CouchDB.

    • Documentation - Questa sezione contiene la documentazione completa per la versione recente di CouchDB.

    • Diagnostics - Sotto questo puoi verificare l'installazione di CouchDB.

    • Recent Databases - Sotto questo puoi trovare i nomi dei database aggiunti di recente.