CouchDB - Curl & Futon

Utilitaire cURL

L'utilitaire cURL est un moyen de communiquer avec CouchDB.

C'est un outil pour transférer des données depuis ou vers un serveur, en utilisant l'un des protocoles pris en charge (HTTP, HTTPS, FTP, FTPS, TFTP, DICT, TELNET, LDAP ou FILE). La commande est conçue pour fonctionner sans intervention de l'utilisateur. cURL offre une multitude d'astuces utiles telles que la prise en charge du proxy, l'authentification des utilisateurs, le téléchargement ftp, la publication HTTP, les connexions SSL (https :), les cookies, la reprise du transfert de fichiers et plus encore.

L'utilitaire cURL est disponible dans les systèmes d'exploitation tels que UNIX, Linux, Mac OS X et Windows. Il s'agit d'un utilitaire de ligne de commande permettant à l'utilisateur d'accéder au protocole HTTP directement depuis la ligne de commande. Ce chapitre vous apprend à utiliser l'utilitaire cURL.

Utilisation de l'utilitaire cURL

Vous pouvez accéder à n'importe quel site Web à l'aide de l'utilitaire cURL en tapant simplement cURL suivi de l'adresse du site Web comme indiqué ci-dessous -

curl www.tutorialspoint.com/

Par défaut, l'utilitaire cURL renvoie le code source de la page demandée. Il affiche ce code sur la fenêtre du terminal.

Options de l'utilitaire cURL

L'utilitaire cURL propose diverses options de travail, et vous pouvez les voir dans l'aide de l'utilitaire cURL.

Le code suivant montre une partie de l'aide 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

Lors de la communication avec CouchDB, certaines options de l'utilitaire cURL ont été largement utilisées. Voici les brèves descriptions de certaines options importantes de l'utilitaire cURL, y compris celles utilisées par CouchDB.

-X drapeau

(HTTP) Spécifie une méthode de demande personnalisée utilisée lors de la communication avec le serveur HTTP. La demande spécifiée est utilisée à la place de la méthode utilisée autrement (qui est par défaut GET). Lisez la spécification HTTP 1.1 pour plus de détails et d'explications.

(FTP) Spécifie une commande FTP personnalisée à utiliser à la place de LIST lors de la création de listes de fichiers avec ftp.

-H

(HTTP) Un en-tête supplémentaire est utilisé lors de l'obtention d'une page Web. Notez que si vous ajoutez un en-tête personnalisé qui porte le même nom que l'un des en-têtes internes que cURL utiliserait, votre en-tête défini en externe sera utilisé à la place de l'en-tête interne. Cela vous permet de faire un travail encore plus délicat que le ferait normalement cURL. Vous ne devez pas remplacer les en-têtes définis en interne sans savoir parfaitement ce que vous faites. Le remplacement d'un en-tête interne par celui sans contenu sur le côté droit des deux-points empêchera cet en-tête d'apparaître.

cURL garantit que chaque en-tête que vous ajoutez / remplacez est envoyé avec le marqueur de fin de ligne approprié. Vous ne devez pas non plus ajouter cela dans le cadre du contenu de l'en-tête ni ajouter des retours à la ligne ou des retours chariot pour désordre.

Voir aussi les options -A / - user-agent et -e / - referer.

Cette option peut être utilisée plusieurs fois pour ajouter / remplacer / supprimer plusieurs en-têtes.

-d indicateur

En utilisant cet indicateur de cURL, vous pouvez envoyer des données avec la requête HTTP POST au serveur, comme si elle avait été remplie par l'utilisateur dans le formulaire et soumise.

Example

Supposons qu'il existe un site Web et que vous souhaitiez vous y connecter ou envoyer des données au site Web en utilisant l'indicateur –d de l'utilitaire cURL comme indiqué ci-dessous.

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

Il envoie un morceau de message qui ressemble à "userid=001&password=tutorialspoint". De même, vous pouvez également envoyer des documents (JSON) à l'aide de l'option -d.

-o drapeau

À l'aide de cet indicateur, cURL écrit la sortie de la requête dans un fichier.

Example

L'exemple suivant montre l'utilisation de -o indicateur de l'utilitaire 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

Cela obtient le code source de la page d'accueil de tutorialspoint.com, crée un fichier nommé example.com et enregistre la sortie dans le fichier nommé example.html.

Voici un aperçu de la example.html.

-O

Ce drapeau est similaire à –o, la seule différence est qu'avec cet indicateur, un nouveau fichier portant le même nom que l'url demandée a été créé et le code source de l'url demandée y sera copié.

Example

L'exemple suivant montre l'utilisation de -O indicateur de l'utilitaire 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

Il crée un nouveau fichier avec le nom index.htm et y enregistre le code source de la page d'index de tutorialspoint.com.

Bonjour CouchDB

Vous pouvez accéder à la page d'accueil du CouchDB en envoyant une requête GET à l'instance CouchDB installée. Tout d'abord, assurez-vous que vous avez installé CouchDB dans votre environnement Linux et qu'il fonctionne correctement, puis utilisez la syntaxe suivante pour envoyer une requête get à l'instance CouchDB.

curl http://127.0.0.1:5984/

Cela vous donne un document JSON comme indiqué ci-dessous où CouchDB spécifie les détails tels que le numéro de version, le nom du fournisseur et la version du logiciel.

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

Liste de toutes les bases de données

Vous pouvez obtenir la liste de toutes les bases de données créées, en envoyant une requête get avec la chaîne "_all_dbs string ". Voici la syntaxe pour obtenir la liste de toutes les bases de données dans CouchDB.

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

Il vous donne la liste de toutes les bases de données dans CouchDB comme indiqué ci-dessous.

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

Créer une base de données

Vous pouvez créer une base de données dans CouchDB en utilisant cURL avec l'en-tête PUT en utilisant la syntaxe suivante -

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

Exemple

À titre d'exemple, en utilisant la syntaxe donnée ci-dessus, créez une base de données avec un nom my_database comme indiqué ci-dessous.

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

Vérification

Vérifiez si la base de données est créée en répertoriant toutes les bases de données comme indiqué ci-dessous. Ici, vous pouvez observer le nom de la base de données nouvellement créée,"my_database" dans la liste

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

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

Obtenir des informations sur la base de données

Vous pouvez obtenir les informations sur la base de données en utilisant la requête get avec le nom de la base de données. Voici la syntaxe pour obtenir les informations de la base de données.

Exemple

À titre d'exemple, obtenons les informations de la base de données nommée my_databasecomme indiqué ci-dessous. Ici, vous pouvez obtenir les informations sur votre base de données en guise de réponse.

$ 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 est l'interface d'administration Web intégrée de CouchDB. Il fournit une interface graphique simple à l'aide de laquelle vous pouvez interagir avec CouchDB. C'est une interface naïve et elle offre un accès complet à toutes les fonctionnalités de CouchDB. Voici la liste de ces fonctionnalités -

Databases −
  • Crée des bases de données.
  • Détruit les bases de données.
Documents −
  • Crée des documents.
  • Met à jour les documents.
  • Modifie les documents.
  • Supprime les documents.

Démarrage du futon

Assurez-vous que CouchDB est en cours d'exécution, puis ouvrez l'url suivante dans le navigateur -

http://127.0.0.1:5984/_utils/

Si vous ouvrez cette URL, elle affiche la page d'accueil Futon comme indiqué ci-dessous -

  • Sur le côté gauche de cette page, vous pouvez consulter la liste de toutes les bases de données actuelles de CouchDB. Dans cette illustration, nous avons une base de données nomméemy_database, ainsi que les bases de données définies par le système _replicator et _user.

  • Sur le côté droit, vous pouvez voir ce qui suit -

    • Tools - Dans cette section, vous pouvez trouver Configuration pour configurer CouchDB, Replicator pour effectuer des réplications, et Status pour vérifier l'état de CouchDB et les modifications récentes effectuées sur CouchDB.

    • Documentation - Cette section contient la documentation complète de la version récente de CouchDB.

    • Diagnostics - En dessous, vous pouvez vérifier l'installation de CouchDB.

    • Recent Databases - En dessous, vous pouvez trouver les noms des bases de données récemment ajoutées.