Verarbeiten von API-Anfragen für Daten-Speicher

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

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

AnfragetypMethodeGashebelimits
Schreiben
  • Set Entry
  • Increment Entry
  • Delete Entry
  • 10 MB/min/universe Schreiben durchputen
  • 300 Requisiten/min/universe
Lesen

    Liste Daten-Stores Liste Einträge Erhalte Eintrag 1> Liste Versionen Einträge1>

    4> Erhalte Eintragsversion

    4>

  • 20 MB/min/universe Schreiben durchput
  • 300 Requis/min/universe

Bestellte Daten-Stores Limits

AnfragetypMethodeGashebelimits
Schreiben
  • Erstellen
  • Increment
  • Update
  • 1> Löschen 1>

  • 300 requests/min/universum
Lesen

    Liste Holen Sie sich

  • 300 requests/min/universum

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.

EingebenTypNotizen
universeIdnummer
  • Die einzigartige Kennung Ihres Erlebnisses. Siehe Universum-ID .
datastoreNameschnur

    Länge muss 50 Bytes oder weniger sein.

  • Kann nicht null oder leer sein.
scopeschnur
  • Der Umfang eines Store. Siehe Scope-Skripte .
  • Länge muss 50 Bytes oder weniger sein.
entryKeyschnur

    Länge muss 50 Bytes oder weniger sein.

  • Kann nicht null oder leer sein.
content-md5schnur
roblox-entry-attributesschnur
  • SerIALisiert durch JSON-Objekt.
  • Länge muss weniger als 300 Bytes sein.
roblox-entry-useridsSchnur
  • Serialized by JSON-Matrix von 0-4 Zahlen.
  • Keine mehr als 4 Benutzer-IDs.
cursorschnur

  • Ein Indikator für mehr Daten im angeforderten festlegen. Siehe Cursors .
  • >

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:

  1. Navigiere zum Creator-Dashboard.

  2. Finde die Erfahrung mit Datenstores, auf die du Zugriffmöchtest.

  3. 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 .

    Copy Universe ID option from Creator Dashboard

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üsselZielfernrohr
häuser/User_1häuser
Haustiere/User_1haustiere
inventar/User_1inventar

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

# Veranlassen
import tutorialFunctions
DatastoresApi = tutorialFunctions.DataStores()
datastoreName = "PlayerInventory"
# Listen Sie Schlüssel für die globale Reichweite
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)
print(keys.content)
# Liste Schlüssel für spezielle Ansicht
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)
print(keys.content)
# Liste der Schlüssel für alleScope auf wahr
specialScopeKeys = 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: 750
content-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.