Before sending requests to Open Cloud APIs for standard data stores and ordered data stores , you need to understand how to handle them properly. For information on the usage of the API, see the Usage Guide .
Autorisierung
Wie alle Open Cloud-APIs erfordern die Daten-Store-Endpunkte alle Anfragen, einschließlich des x-api-key-Header, der einen API-Schlüssel enthält, der den Anforderungen genügend Berechtigungen gewährt. Dies erfordert, dass Sie den Schlüssel auf das Erlebnis und den Daten-Store anwenden und die Endpunkt-Operation erlaubt ist. Wenn der
Gas
Alle Endpunkte haben zwei Arten von Universe-Level-Throttling: Request-per-Minute-Throttling und durchput-Throttling. Mit jedem Erlebnis, Request-per-Minute-Throttling ermöglicht es Ihnen, eine bestimmte Anzahl von Anfragen pro Minute zu senden, und 2> durchput-Throttling2> ermöglicht I
Anders als die Lua-API basieren diese Limits derzeit nicht auf Benutzerzahlen. Überschreiten dieser Limits verursacht, dass der Endpunkt 429 Too Many Requests zurückgibt.
Standard-Datenspeicherung-Drosselungslimits
Anfragetyp | Methode | Gashebelimits |
---|---|---|
Schreiben |
|
|
Lesen | Liste Daten-Stores Liste Einträge Erhalte Eintrag 1> Liste Versionen Einträge1> 4> Erhalte Eintragsversion 4> |
|
Bestellte Daten-Stores Limits
Anfragetyp | Methode | Gashebelimits |
---|---|---|
Schreiben |
1> Löschen 1> |
|
Lesen | Liste Holen Sie sich |
|
Eingabeverifizierung
Bevor Sie Ihre Anfrage senden, stellen Sie sicher, dass Sie die Endpunkte-Parameter auf die Formatierungsanforderungen und Einschränkungen basierend auf der folgenden Tabelle validieren. Einzelne Endpunkte können zusätzliche Anforderungen haben, die über diese folgenden Einschränkungen hinausgehen. Wenn ein Parameter nicht die folgenden Einschränkungen erfüllt, gibt der Endpunkt eine 400 Bad Request zurück.
Eingeben | Typ | Notizen |
---|---|---|
universeId | nummer |
|
datastoreName | schnur |
Länge muss 50 Bytes oder weniger sein. |
scope | schnur |
|
entryKey | schnur |
Länge muss 50 Bytes oder weniger sein. |
content-md5 | schnur |
|
roblox-entry-attributes | schnur |
|
roblox-entry-userids | Schnur |
|
cursor | schnur |
|
Universum-ID
Die Universum-ID ist die eindeutige Kennung des Erlebnisses, in dem Sie auf Ihre Daten-Stores zugreifen möchten. Der Wert einer Universum-ID ist der Wert ihres DataModel.GameId , nicht der gleiche wie der 2>Startplatz-ID2>, der den Startplatz einer Erfahrung identifiziert, nicht aber den gesamten Erfahrungs-Status.
Sie können die Universum-ID eines Erlebnisses mit den folgenden Schritten erhalten:
Navigiere zum Creator-Dashboard.
Finde die Erfahrung mit Datenstores, auf die du Zugriffmöchtest.
Klicken Sie auf die Schaltfläche ⋯ auf der Ziel-Thumbnail, um eine Liste von Optionen anzuzeigen, und wählen Sie dann Kopieren Sie Universum-ID .
Scope
Sie können Ihre Daten-Stores organisieren, indem Sie eine einzigartige Zeichen als Skalierung festlegen, die einen Unterordner für den Eintrag spezifiziert. Sobald Sie eine Skalierung festgelegt haben, wird sie automatisch auf alle Schlüssel im gesamten Daten-Store angewendet. Schlüssel sind optional und standardmäßig als global für Standard-Datenspeicherungen, aber erforderlich für bestellte Daten-Stores.
Die Kategorie Kategorisiert deine Daten mit einem String und einem Separator mit "/", wie folgt:
Schlüssel | Zielfernrohr |
---|---|
häuser/User_1 | häuser |
Haustiere/User_1 | haustiere |
inventar/User_1 | inventar |
Alle Daten-Store-Eingabemethode haben ein Scope -Argument für den Fall, dass Sie auf die eingestorenen Einträge unter einer nicht
Darüber hinaus, wenn Sie alle Schlüssel, die in einem Daten-Store mit einer oder mehreren nicht-Standard-Sichten gespeichert sind, auf
Du kannst nicht Scope und AllScopes Parametern auf demselben Anfrage übertragen, sonst ruft die Anrufe einen Fehler zurück. Nutzen Sie die Hilfsfunktionen aus den Open Cloud-APIs für Daten-Speicher-Module, um den folgenden Code zu zeigen, wie Sie jeden Schlüssel in einem Daten-Speicher mit einem benutzerdefinierten Skala lesen können:
Listen Sie Schlüssel für verschiedene Anwendungsbereiche
# Veranlassenimport tutorialFunctionsDatastoresApi = tutorialFunctions.DataStores()datastoreName = "PlayerInventory"# Listen Sie Schlüssel für die globale ReichweitespecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)print(keys.content)# Liste Schlüssel für spezielle AnsichtspecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)print(keys.content)# Liste der Schlüssel für alleScope auf wahrspecialScopeKeys = DatastoresApi.list_entries(datastoreName, allScopes = True)print(specialScopeKeys.content)
Schlüssel mit dem entsprechenden Zielfeld werden in der Antwort zurückgegeben:
Beispiellose Antworten für verschiedene Ansichten
// Antwort für globale Reichweite
{ "keys": [{ "scope": "global", "key": "User_2" }], "nextPageCursor": "" }
// Antwort für spezielle Anforderungen
{"keys":[{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
// Antwort für alle 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":""}
Inhalt-MD5
Content-MD5 ist die base-64 encoded MD5 checksum des Inhalts. Es ist ein optionales Request-Header für den Set Entry-Endpunkt, der die Datenintegrität überprüft und potenzielle Probleme erkennt.
Sie können die Sprache Ihrer Wahl verwenden, um den Wert des content-md5-Header zu berechnen. Das folgende Beispiel verwendet Python. Die folgenden Funktionen hashlib.md5() und base64.b64Encode() sind in Python Standard-Bibliotheken verfügbar (2.7, 3+).
Inhalts-MD5 erzeugen
# Mit Anfragen$ 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==# Verwenden Sie einfach "{number1}" und "{number1}"$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"sTf90fedVsft8zZf6nUg8g==
Wenn Sie Schwierigkeiten beim Generieren eines gültigen content-md5 Wertes haben, müssen Sie Ihren Anfragekörper möglicherweise in UTF-8-Binärcode vor dem Checksum-Generieren encodieren.
Cursores
Endpunkte, die Datenlisten zurückgeben, können auch eine nextPageCursor -String zurückgeben. Dies zeigt an, dass mehr Daten im angeforderten Ergebnisset verfügbar sind. Um dies zu erhalten, geben Sie diese String im cursor-Anfrage參數 auf einer следующей請求。如果 cursorungültig400 Bad Request2>。
Die Formatierung von Cursor-Strängen ist nicht definiert . Sie sollten sie nicht als interpretieren oder parsen, da sie sich jederzeit ändern können.
Filter
Wenn Sie Anfragen an die List > Methode für bestellte Daten-Stores hinzufügen, können Sie einen optionalen filter-Anfrage参数 hinzufügen, um Einreichungen mit Wertobjekten in einer bestimmten Reichweite zurückzukehren.
Der filter -Parameter unterstützt einen Logikbetreiber, &&, und zwei Vergleichsbetreiber, <= für die Festlegung des maximalen Wertes und 1> >=1> für die Festlegung des minimalen Wertes. Wenn Sie eine Reichweite mit einem Maximum und einem Minimum festlegen möchten, fügen Sie 4> &&4> zwischen den beiden Sequ
Zum Beispiel, um Werte mit einem Wert, der weniger als oder gleich ist 10, zurückzugeben, musst du entry <= 10 als den filter Wert eingeben. Um Werte mit einem Wert zwischen 10 und 50 zurückzugeben, gib entry <= 50 && entry >= 10 ein.
Die folgenden Beispiele sind falsche filter Werte, die Ihre Anfragen nicht verwalten können:
- entry <= 10 - kein leerzeichen zwischen jedem teil der sequenz.
- 10 <= entry - entry und der vergleichswert ist auf der falschen seite.
- entry <= 10 && entry <= 50 - && kann nur verwendet werden, um ein bereich mit zwei vergleichsbetern für den minimum- und maximumwert zu spezifizieren.
Verlorene Flaggen erlauben
Wenn Sie Anfragen an die Update-Methode senden, um einen bestehenden aufgerufenen Datenbestand zu aktualisieren, können Sie eine optionale allow_missing -Flagge hinzufügen, um die Erstellung eines Eintrags zu erlauben, auch wenn der Eintrag nicht existiert.
Wenn du die allow_missing Flagge auf True setzt:
Wenn der Eintrag nicht existiert, gibt die Antwort einen neuen Eintrag zurück.
Wenn der Eintrag existiert, aber der Inhalt den aktuellen Wert des Eintrags entspricht, bleibt der aktuelle Eintrag unverändert.
Wenn der Eintrag existiert und der Inhalt den aktuellen Wert des Eintrags nicht erfüllt, gibt die Antwort den Eintrag mit dem aktualisierten neuen Inhaltswert zurück.