Avant d'envoyer des demandes d'ouverture des API du cloud pour stocker des données standard et stocker des données commandées, vous devez comprendre comment les gérer correctement. Pour plus d'informations sur l'utilisation de l'API, voir le Guide d'utilisation.
Authentification
Comme toutes les API du cloud ouvert, les points de fin de stockage des données nécessitent toutes les demandes pour inclure l'en-tête x-api-key, qui contient une clé API avec des permissions suffisantes pour la demande. Cela nécessite que vous appliquiez la clé à l'expérience et au boutiquede données, et l'opération de fin de la session est autorisée. Si la clé est invalide, <
Accélérateur
Tous les endpoints ont deux types de niveau d'univers : le niveau d'univers de demande par minute et le niveau d'univers de rotation . Avec chaque expérience, le niveau d'univers de demande par minute vous permet d'envoyer un certain nombre de demandes par minute, et 1> le niveau d'univers de rotation1> vous permet d'envoyer une certaine quantité de données par minute, peu importe
Contrairement à l'API Lua, ces limites ne se mettent pas à l'échelle en fonction du nombre d'utilisateurs. Le dépassement de ces limites provoque le retour de 429 Too Many Requests.
Limites de ralentissement des magasins de données standard
Type de demande | Méthode | Limites de vitesse |
---|---|---|
Écrire |
|
|
Lire | List Data Stores List Entries Get Entry 1> List Entry Versions1> 4> Get Entry Version 4> |
|
Commandes de magasins de données suralimentation
Type de demande | Méthode | Limites de vitesse |
---|---|---|
Écrire |
1> Supprimer1> |
|
Lire |
|
|
Validation d'entrée
Avant d'envoyer votre demande, assurez-vous de valider les paramètres d'extrémité sur les exigences de forme et les contraintes en fonction de la table suivante. Les endpoints individuels peuvent avoir des exigences supplémentaires au-delà de ces limites. Si un paramètre ne satisfait pas les limites suivantes, l'extrémité renvoie un 400 Bad Request .
Entrée | Type | Notes |
---|---|---|
universeId | number |
|
datastoreName | chaîne |
|
scope | chaîne |
|
entryKey | chaîne |
|
content-md5 | chaîne |
. |
roblox-entry-attributes | chaîne |
|
roblox-entry-userids | Chaîne |
|
cursor | chaîne |
|
ID de l'univers
L'identifiant unique de l'univers est l'identifiant unique de l'expérience dans laquelle vous voulez accéder à vos magasins de données. La valeur d'un identifiant d'univers d'expérience est la valeur de son DataModel.GameId, non pas la même que le lieu de départ ID, qui identifie le lieu de départ d'une expérience plutôt que l'ensemble de l'exp
Vous pouvez obtenir le ID de l'univers d'une expérience avec les étapes suivantes :
Accédez à la tableau de bord du créateur.
Trouvez l'expérience avec les magasins de données que vous souhaitez accès.
Cliquez sur le bouton ⋯ sur la vignette de l'expérience cible pour afficher une liste d'options, puis sélectionnez Copier l'ID de l'univers .
Lunettes
Vous pouvez organiser vos magasins de données en configurant un champ unique en tant que champ de référence qui spécifie un sous-dossier pour l'entrée. Une fois que vous avez configuré un champ, il s'ajoute automatiquement à toutes les clés dans toutes les opérations effectuées sur le boutiquede données. Les champs sont facultatifs et par défaut comme global pour les magasins de données standard, mais requis pour les magasins de données ordonnés.
La catégorie scope transforme vos données avec une chaîne et un séparateur avec «/», tels que :
Clé | Lunette |
---|---|
maisons/User_1 | maisons |
animaux/User_1 | animaux de compagnie |
inventaire/User_1 | inventaire |
Toutes les méthodes d'entrée de données ont un Scope paramètre pour quand vous avez besoin d'accéder aux entrées stockées sous
En outre, si vous souhaitez enumerer toutes les clés stockées dans un data store qui a un ou plusieurs scopes non définis, vous pouvez dé
Vous ne pouvez pas passer les paramètres Scope et AllScopes sur la même demande, sinon l'appel renvoie une erreur. Leveraging les fonctions d'aide des API Open Cloud pour les magasins de données, le code suivant montre comment vous pouvez lire chaque clé dans un magasin de données avec un scope personnalisé :
Liste des clés pour différents scopes
# Configurerimport tutorialFunctionsDatastoresApi = tutorialFunctions.DataStores()datastoreName = "PlayerInventory"# Liste des clés pour la portée globalespecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)print(keys.content)# Liste des clés pour un champ spécialspecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)print(keys.content)# Liste des clés pour tous les scripts de scope configurés comme vraispecialScopeKeys = DatastoresApi.list_entries(datastoreName, allScopes = True)print(specialScopeKeys.content)
Les clés avec le champ d'application correspondant sont renvoyées dans la réponse :
Exemples de réponses pour différents scopes
// Réponse pour le champ global
{ "keys": [{ "scope": "global", "key": "User_2" }], "nextPageCursor": "" }
// Réponse pour le champ spécial
{"keys":[{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
// Réponse pour tous les scopes
{"keys":[{"scope":"global","key":"User_3"},{"scope":"global","key":"User_4"},{"scope":"global","key":"User_5"},{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
Contenu-MD5
Content-MD5 est le base-64 encodé MD5 checksum du contenu. Il s'agit d'un en-tête de requête optionnel pour le Set Entry point d'extrémité qui vérifie l'intégrité des données et détecte les problèmes potentiels.
Vous pouvez utiliser la langue de votre choix pour calculer la valeur de l'en-tête content-md5. L'exemple suivant utilise Python. Les fonctions hashlib.md5() et base64.b64Encode() sont disponibles dans les bibliothèques standard de Python (2.7, 3+).
Génération de contenu MD5
# Avec des prompts$ python -c "import base64, hashlib; print('content-md5: ' + str(base64.b64encode(hashlib.md5(bytes(input('content: '), encoding='utf8')).digest()), encoding='utf8'))"content: 750content-md5: sTf90fedVsft8zZf6nUg8g==# Utiliser seulement stdin etstdout$ 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 de génération d'une valeur content-md5 valide, vous devrez peut-être encoder votre corps de requête en UTF-8 binaire avant de calculer le checksum.
Curseurs
Les points d'extrémité qui retournent des listes de données peuvent également retourner une chaîne nextPageCursor. Cela indique que plus de données sont disponibles dans le jeu de résultats configurer. Pour les recevoir, fournissez cette chaîne dans le paramètre de requête cursor suivant. Si le paramètre de requête est fourni mais invalide, le point d'extrémité renvoie 400 Bad Request.
Le format des chaînes de curseur n'est pas défini. Vous ne devriez pas les interpréter ou les analyser comme ils peuvent changer à tout moment.
Filtres
Lors de l'envoi de demandes au List``filter méthode pour les magasins de données commandés, vous pouvez ajouter un paramètre de requête facultatif filter pour renvoyer des entrées avec des valeurs dans une tranche spécifiée.
Le paramètre filter prend en charge un opérateur de logique, &&, et deux opérateurs de comparaison, <=, pour définir la valeur maximale et 1> >=1> pour définir la valeur minimum. Si vous souhaitez définir une gamme avec un maximum et un minimum, ajoutez 4> &&4> entre les deux séquences.
Par exemple, pour renvoyer des entrées avec des valeurs inférieures ou égales à 10, vous devez entrer entry <= 10 comme valeur filter. Pour renvoyer des entrées avec des valeurs entre 10 et 50, entrez entry <= 50 && entry >= 10 .
Les exemples suivants sont des valeurs invalides filter qui peuvent échouer vos demandes :
- entry <= 10 - pas d'espace blanc entre chaque partie de la séquence.
- 10 <= entry entrée) et la valeur de comparaison est sur le mauvais côté.
- entry <= 10 && entry <= 50 - && ne peut être utilisé que pour spécifier une portée avec deux opérateurs de comparaison pour la valeur min et max.
Permettre les drapeaux manquants
Lors de l'envoi de demandes au Update méthode pour mettre à jour une entrée de stock de données commandée existante, vous pouvez ajouter un tag allow_missing optionnel pour permettre la création d'une entrée même si la entrée n'existe pas.
Lorsque vous avez configuré le allow_missing drapeau sur True :
Si l'entrée n'existe pas, la réponse renvoie une nouvelle entrée.
Si l'entrée existe mais que le contenu correspond à la valeur existante de l'entrée, l'entrée existante reste inchangée.
Si l'entrée existe et que le contenu ne correspond pas à la valeur existante de l'entrée, la réponse renvoie l'entrée avec la valeur de contenu mise à jour.