Opérations de l'API pour les services de recherche

Une spécificité de SoftLayer Object Storage est un outil de recherche complet qui ne ressemble à aucun autre. Le service de recherche intégré de SoftLayer permet aux utilisateurs d'effectuer une recherche dans l'index en fonction du compte, du conteneur ou du chemin et fournit de nombreux paramètres qui facilitent le filtrage des résultats de la recherche. L'API du service de recherche est fondée sur l'API d'Object Storage et indexe les méta-informations, les conteneurs et les objets, tout en fournissant une interface familière de recherche de l'index.

Requêtes

Les requêtes de recherche permettent de rechercher un compte entier, un conteneur particulier ou un chemin, en fonction de l'adresse URL entrée au moment de la recherche. Utilisez l'un des exemples suivants ainsi que votre code d'authentification pour exécuter la recherche voulue.

Recherche Adresse URL
Compte https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE
Conteneur https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE/container
Chemin https://dal05.objectstorage.softlayer.net/v1/AUTH_12345ABCDE/container/path

Après avoir accédé à la zone voulue de l'API du service de recherche, une requête "GET" est envoyée avec l'en-tête "X-Context" et la valeur search. Il existe plusieurs paramètres pour filtrer les résultats :

Paramètres

q

La chaîne de la requête de recherche.

Exemple :

?q=test

Si vous indiquez des zones (y compris des méta-informations), utilisez un point pour séparer 'q'
et les noms de zone.

Exemple :

?q.content_type=application

Pour les méta-zones, vous pouvez utiliser un point ou un tiret pour séparer 'meta' du nom de la méta-clé.

Exemples (générant des résultats identiques ) :

?q.meta.foo=bar
?q.meta-foo=bar

field

Zone à rechercher. Les paramètres par défaut recherchent le nom et les métavaleurs personnalisées.

  • container : nom du conteneur
  • content_type : type de contenu de l'objet
  • count : nombre d'objets dans un conteneur
  • hash : un hachage résumé du fichier (etag)
  • last_modified : horodate dateTime indiquant la dernière date de modification de l'objet
  • meta.myfield : méta-valeurs personnalisées définies pour le conteneur ou l'objet
  • name : nom de l'objet ou du conteneur
  • object : nom de l'objet
  • read : valeur d'en-tête de lecture de x-container (utilisé pour la liste de contrôle d'accès)
  • write : valeur d'en-tête d'écriture de x-container (utilisé pour la liste de contrôle d'accès)

type

Type d'entité à rechercher. Le paramètre par défaut affiche tous les types (conteneurs et objets)

  • container
  • object

format

Le format de retour. Voir les exemples ci-après. Format par défaut : plain (texte brut)

  • json
  • xml
  • plain

recursive

Définit si la recherche est ou non limitée à un seul niveau de répertoire ou si elle doit être effectuée de façon récursive. Paramètre par défaut : true

  • true
  • false

Une requête de recherche de base peut contenir un ou plusieurs paramètres en fonction du retour souhaité.
Lorsque vous entrez plusieurs paramètres de recherche, séparez les paramètres par un symbole perluète (&).
Par exemple, pour rechercher de façon récursive des objets ayant le type de contenu "application/directory" et demander le retour au format XML, rédigez la requête comme suit :

GET /v1/<account>?q=application%2Fdirectory&field=content_type&recursive=true&format=xml
X-Context: search
X-Auth-Token: AUTH_SADASDM43423DMSSAZXC234

Réponses

La réponse de l'API de recherche à votre requête est renvoyée avec un en-tête simple et un corps pouvant être formaté en json, xml ou en texte brut. L'en-tête de réponse indique l'horodatage dateTime de votre requête, le contenu et le type de retour, le numéro du retour et le nombre total d'éléments en rapport avec votre requête. L'en-tête de réponse est formaté comme suit :

HTTP/1.1 200 OK
Date: Thu, 19 Oct 2011 12:00:00 GMT
Content-Type: application/xml; charset=utf-8
X-Search-Items-Count: 3
X-Search-Items-Total: 29

Dans votre en-tête de réponse, X-Search-Items-Count indique le nombre d’éléments inclus dans la réponse, tandis que X-Search-Items-Total indique le nombre total d'éléments disponibles. Si le total dépasse ce nombre, des éléments supplémentaires peuvent être récupérés. La modification de vos paramètres permet d'inclure des informations supplémentaires dans le retour.

Le corps de réponse contient plusieurs propriétés en rapport avec votre requête, notamment le type du contenu, la dernière date de modification, le hachage MD5, etc. Il est important de noter que dans toute réponse, toutes les propriétés associées aux données seront renvoyées. Il n'existe pas de propriétés relationnelles ou de nombre car il n’y a pour le moment pas d'application de masques d'objet dans l'API d'Object Storage. Vous trouverez ci-dessous des exemples d'une réponse potentielle au format json, XML et en texte brut.

Corps de réponse JSON (application/json)

[
    {
        "container": "test1",
        "content_type": "application/x-python-code",
        "hash": "c23c402de9d67332bce2a73f31a503c3",
        "last_modified": "Wed, 19 Oct 2011 21:26:30 GMT",
        "meta_mtime": "1318343501.0",
        "name": "test.py",
        "object": "test.py",
        "type": "object"
    },
    {
        "container": "test",
        "content_type": "text/plain",
        "hash": "d41d8cd98f00b204e9800998ecf8427e",
        "last_modified": "Mon, 17 Oct 2011 14:31:11 GMT",
        "meta_mtime": "1318861839.0",
        "name": "test_data/3.txt",
        "object": "test_data/3.txt",
        "type": "object"
    }   
]

Corps de réponse XML (texte/xml)

<?xml version="1.0" encoding="UTF-8"?>
<results>
    <object>
        <container>test1</container>
        <name>test.py</name>
        <object>test.py</object>
        <last_modified>Wed, 19 Oct 2011 21:26:30 GMT</last_modified>
        <content_type>application/x-python-code</content_type>
        <hash>c23c402de9d67332bce2a73f31a503c3</hash>
        <type>object</type>
        <meta_mtime>1318343501.0</meta_mtime>
    </object>
    <object>
        <container>test</container>
        <name>test_data/3.txt</name>
        <object>test_data/3.txt</object>
        <last_modified>Mon, 17 Oct 2011 14:31:11 GMT</last_modified>
        <content_type>text/plain</content_type>
        <hash>d41d8cd98f00b204e9800998ecf8427e</hash>
        <type>object</type>
        <meta_mtime>1318861839.0</meta_mtime>
    </object>
</results>

Corps de réponse Plain (texte/texte brut)

container: test1
name: test.py
object: test.py
last_modified: Wed, 19 Oct 2011 21:26:30 GMT
content_type: application/x-python-code
hash: c23c402de9d67332bce2a73f31a503c3
type: object
meta_mtime: 1318343501.0
 
container: test
name: test_data/3.txt
object: test_data/3.txt
last_modified: Mon, 17 Oct 2011 14:31:11 GMT
content_type: text/plain
hash: d41d8cd98f00b204e9800998ecf8427e
type: object
meta_mtime: 1318861839.0

Comme on l'a déjà vu, toutes les requêtes peuvent être structurées afin d'appeler un type particulier de réponse en utilisant les paramètres indiqués dans la section précédente. Lorsque vous serez familiarisé avec le fonctionnement de ce service, consultez la page Méthodes où vous trouverez des informations de base sur cette méthode et toutes les méthodes associées aux API d'Object Storage et du service de recherche.