Il y a plusieurs considérations concernant l'envoi de demandes et le traitement des réponses des API de magasin de données Open Cloud.
En-têtes HTTP
Comme tous les points de terminaison Open Cloud, les demandes de magasin de données qui utilisent l'authentification par clé API doivent inclure l'en-tête x-api-key. Pour plus d'informations, consultez Gérer les clés API.
- Une clé API incorrecte ou manquante entraîne une erreur 401.
- Une clé API valide qui manque des autorisations correctes entraîne une erreur 403.
Si une demande inclut un corps, comme une demande de création ou de mise à jour, incluez les en-têtes Content-Type: application/json et Content-Length. La plupart des clients incluent ces en-têtes automatiquement.
Pagination
Les magasins de données contiennent souvent de nombreuses entrées, ce qui signifie que votre code, en particulier lors de l'appel de Lister les entrées du magasin de données, doit gérer un nombre maximum de résultats et de pages. Pour en savoir plus, consultez Pagination.
Filtres
Si vous utilisez des préfixes dans les noms de vos entrées de magasin de données, vous souhaitez probablement filtrer vos appels GET, comme ceci :
def list_entries(universe, data_store, filter):
list_path = f'universes/{universe}/data-stores/{data_store}/entries'
url = base_url + list_path
return requests.get(url, params={'filter': f'id.startsWith("global/{filter}")'}, headers={apiHeaderKey: apiKey})
La syntaxe des filtres est extrêmement limitée. Consultez la documentation de référence pour les filtres disponibles pour les magasins de données standards et ordonnés.
Autoriser les indicateurs manquants
Les méthodes PATCH (mise à jour) pour les magasins de données standards et ordonnés ont un paramètre allow_missing. S'il est défini sur true, ce paramètre vous permet de créer des entrées qui n'existent pas déjà au lieu de renvoyer une erreur. Laissez ce paramètre à sa valeur par défaut false, sauf si vous avez une bonne raison de ne pas le faire ; mettre à jour une entrée qui n'a jamais été créée représente souvent une erreur dans la logique de programmation.
Portées
De nombreuses demandes nécessitent que vous spécifiez une portée, même si c'est la valeur par défaut global. Ces portées sont distinctes des portées d'autorisation et vous permettent de subdiviser et d'organiser les entrées dans un magasin de données.
Cependant, plutôt que de créer des portées non par défaut, nous recommandons fortement d'utiliser des préfixes. Pour en savoir plus, consultez Liste et préfixes.
Content-MD5
L'API Open Cloud v1 prend en charge un checksum MD5 codé en base64 optionnel dans certaines demandes, ce qui peut détecter des problèmes d'intégrité des données. De nombreuses langues disposent de fonctions intégrées pour calculer la valeur de l'en-tête content-md5. L'exemple suivant utilise Python :
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"sTf90fedVsft8zZf6nUg8g==
Si vous rencontrez des problèmes pour générer une valeur content-md5 valide, vous pourriez avoir besoin d'encoder le corps de votre demande en UTF-8 avant de calculer le checksum.