Lecture d'un document

Les étapes présentées ici montrent comment lire un document :

  1. Envoyez une demande GET pour extraire un document.

  2. Exécutez la commande suivante : https://$ACCOUNT.cloudant.com/$DATABASE/$DOCUMENT_ID.

N'oubliez pas que pour une base de données partitionnée, $DOCUMENT_ID est composé d'une partie clé de partitionnement et d'une partie clé de document.

Si vous ne connaissez pas l' _id e d'un document en particulier, vous pouvez interroger la base de données pour obtenir la liste de tous les documents.

En raison de la nature cohérente à terme distribuée d'IBM Cloudant, il se peut que les lectures renvoient des données périmées. En particulier, les données écrites récemment, même par le même client, peuvent ne pas être renvoyées à partir d'une demande de lecture immédiatement après la demande d'écriture. Pour éviter ce comportement, un client peut mettre en cache l'état des données localement. La mise en cache permet également de conserver un nombre de demandes faibles, d'améliorer les performances des applications et de diminuer la charge dans le cluster de base de données. Ce comportement s'applique aussi à d'autres demandes de lecture, comme MapReduce et les index de recherche.

Voir un exemple d'extraction de document via HTTP :

GET /$DATABASE/$DOCUMENT_ID HTTP/1.1

Vous pouvez personnaliser cette section pour le langage de programmation que vous souhaitez utiliser en sélectionnant le language dans les exemples de code.

Voir un exemple de récupération d'un document :

curl -H "Authorization: Bearer $API_BEARER_TOKEN" -X GET "$SERVICE_URL/products/small-appliances:1000042"
import com.ibm.cloud.cloudant.v1.Cloudant;
import com.ibm.cloud.cloudant.v1.model.Document;
import com.ibm.cloud.cloudant.v1.model.GetDocumentOptions;
Cloudant service = Cloudant.newInstance();
GetDocumentOptions documentOptions =
    new GetDocumentOptions.Builder()
        .db("products")
        .docId("small-appliances:1000042")
        .build();
Document response =
    service.getDocument(documentOptions).execute()
        .getResult();
System.out.println(response);
const { CloudantV1 } = require('@ibm-cloud/cloudant');
const service = CloudantV1.newInstance({});
service.getDocument({
  db: 'products',
  docId: 'small-appliances:1000042'
}).then(response => {
  console.log(response.result);
});
from ibmcloudant.cloudant_v1 import CloudantV1
service = CloudantV1.new_instance()
response = service.get_document(
  db='products',
  doc_id='small-appliances:1000042'
).get_result()
print(response)
getDocumentOptions := service.NewGetDocumentOptions(
  "products",
  "small-appliances:1000042",
)
document, response, err := service.GetDocument(getDocumentOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(document, "", "  ")
fmt.Println(string(b))

L'exemple précédent de Go requiert le bloc d'importation suivant :

import (
   "encoding/json"
   "fmt"
   "github.com/IBM/cloudant-go-sdk/cloudantv1"
)

Tous les exemples de Go nécessitent l'initialisation de l'objet service. Pour plus d'informations, reportez-vous à la documentation de l'API Section Authentification pour avoir des exemples.

La réponse contient le document que vous avez demandé ou une description de l'erreur si le document ne peut pas être extrait.

Voici un exemple de réponse suite à une demande d'extraction d'un document :

{
  "_id": "exampleid",
  "brand": "Foo",
  "colours": [
    "red",
    "green",
    "black",
    "blue"
  ],
  "description": "Slim Colourful Design Electronic Cooking Appliance for ...",
  "image": "assets/img/0gmsnghhew.jpg",
  "keywords": [
    "Foo",
    "Scales",
    "Weight",
    "Digital",
    "Kitchen"
  ],
  "name": "Digital Kitchen Scales",
  "price": 14.99,
  "productid": "1000042",
  "taxonomy": [
    "Home",
    "Kitchen",
    "Small Appliances"
  ],
  "type": "product"
}

Paramètres de requête

Vous pouvez ajouter des paramètres de requête à l'URL, par exemple /mydatabase/doc?attachments=true&conflicts=true.

Tous les paramètres sont facultatifs.

Paramètres de requête
Nom Type Description Valeur par défaut
attachments Booléen Inclut des corps de pièce jointe dans la réponse. Faux
att_encoding_info Booléen Inclut des informations de codage dans les modules de remplacement de pièce jointe si la pièce jointe spécifique est compressée. Faux
atts_since Tableau de chaînes de révision Inclut des pièces jointes uniquement depuis les révisions spécifiées. N'inclut pas les pièces jointes pour les révisions spécifiées. []
conflicts Booléen Inclut des informations sur les conflits dans les documents. Faux
deleted_conflicts Booléen Inclut des informations sur les révisions conflictuelles supprimées. Faux
latest Booléen Force l'extraction de la révision "feuille" la plus récente, quelle que soit la révision demandée. Faux
local_seq Booléen Inclut le numéro de séquence de la dernière mise à jour du document. Faux
meta Booléen Identique à la spécification des paramètres de requête conflicts, deleted_conflicts et open_revs. Faux
open_revs Tableau ou all Extrait des documents des révisions feuilles spécifiées. De plus, admet la valeur all pour le renvoi de toutes les révisions feuilles. []
rev Chaîne Extrait le document de la révision spécifiée.
revs Booléen Inclut la liste de toutes les révisions de document connues. Faux
revs_info Booléen Inclut des informations détaillées pour toutes les révisions de document connues. Faux

Lectures multiples

Pour récupérer plusieurs documents à la fois, interrogez la base de données en utilisant l'option « include_docs ».