Przyjmowanie zapytań API dla magazynów danych

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Przed wysyłaniem wniosków o otwarcie chmurkowych API dla przechowywania danych standardowych i przechowywania danych zamówionych, musisz zrozumieć, jak je prawidłowo zarządzać. Dla informacji o użyciu API, zobacz Przewodnik użytkownika.

Autoryzacja

Podobnie jak wszystkie otwarte API API, wszystkie węzły przetwarzania danych wymagają wszystkich żądań, aby zawierały x-api-key nagłówkę, która zawiera klucz API z nieprawidłowedla wniosku. Wymaga to, abyś zastosował klucz do doświadczenia i bazy d

Przyspieszanie

Wszystkie końce mają dwa rodzaje ograniczenia poziomu wszechświata: ograniczenie poziomu wszechświata prośby i ograniczenie poziomu wszechświata przezputu. Z każdym doświadczeniem ograniczenie poziomu wszechświata prośby pozwala na wys

W przeciwieństwie do interfejsu Lua API nie skalują one obecnie w zależności od liczby użytkowników. Przekroczenie tych limitów powoduje, że końcowy punkt końcowy zwraca 429 Too Many Requests.

Standardowe ograniczenia prędkości

Typ prośbyMетоOgraniczenia prędkości
Pisać

    Ustaw Wpis Zwiększ Wpis Usuń Wpis ”

  • 10 MB/min/universe write throughput
  • 300 requis/min/universe
Przeczytaj

    Lista magazynów danych listy Lista wpisów Zdobądź wpis 1> Lista wersji wpisu1>

    4> Zdobądź wersję wpisu

    4>

  • 20 MB/min/uniwersum pisać przezputność
  • 300 requis/min/uniwersum

Ograniczenia prędkości dla przechowywanych danych

Typ prośbyMетоOgraniczenia prędkości
Pisać
  • Utwórz
  • Zwiększ
  • Aktualizuj
  • 1> Usuń1>

  • 300 requis/min/wielos wszechświatów
Przeczytaj

    Lista listach

  • Zdobądź listę
  • Get
  • 300 requis/min/wielos wszechświatów

Weryfikacja wejścia

Przed wysłaniem wysyłanego przez Ciebie prośba, upewnij się, że uwzględniono parametry końca wymagań i ograniczeń na formularzu opartych na poniższym tabeli. Każdy końcowy punkt może mieć dodatkowe wymagania poza tymi. Jeśli parametr nie spełnia poniższych ograniczeń, końcowy punkt zwraca 400 Bad Request.

WejścieTypNotatki
universeIdliczba
datastoreNamestruny
  • Długość musi być mniejsza niż 50 bajtów lub mniej.
  • Nie może być ani nulości, ani pusty.
scopestruny
  • Zakres sklepdanych. Patrz zakresy .
  • Długość musi być mniejsza niż 50 bajtów.
entryKeystruny
  • Długość musi być mniejsza niż 50 bajtów lub mniej.
  • Nie może być ani nulości, ani pusty.
content-md5struny
roblox-entry-attributesstruny
  • SerIALIZOWANO przez obiekt JSON.
  • Długość musi być mniejsza niż 300 bajtów.
roblox-entry-useridsStruny
  • SerIALIZOWANO przez maszynę szyfrowującą JSON z 0-4 liczbami.
  • Nie więcej niż 4 ID użytkownika.
cursorstruny
  • Wskaźnik danych dostępnych w ustawiaćwyników wymaganego. Zobacz Kursory .

ID wszechświata

Uniwersalne ID to unikalny identyfikator doświadczenia, do którego chcesz uzyskać dostęp. Wartość uniwersalnego identyfikatora doświadczenia to wartość jego DataModel.GameId, nie nie ta sama co 1>identyfikator miejsca wyjścia1>, który identyfikuje miejsce wyjścia doświadczenia

Możesz uzyskać Uniwersalny ID do doświadczenia za pomocą następujących kroków:

  1. Przejdź do Panelu twórcy.

  2. Znajdź doświadczenie z magazynami danych, do których chcesz uzyskać dostęp.

  3. Kliknij przycisk na miniaturze celu, aby wyświetlić listę opcji, a następnie wybierz Kopiuj ID wszechświata .

    Copy Universe ID option from Creator Dashboard

Zakresy

Możesz zorganizować swoje magazyny danych poprzez ustawienie unikalnej wartości jako zakresu, który określa podkatalog dla wpisu. Po ustawieniu zakresu, zostanie automatycznie dołączony do wszystkich kluczy wszystkich operacji wykonanych na danych. zakresy są opcjonalne i domyślnie jako global dla standardowych magazynów danych, ale wymagane dla zaszyfrowanych danych.

Kategoria zakresu kategoryzuje twoje dane za pomocą ciągu i separatora z "/", takich jak:

KluczZakres
domy/User_1domy
zwierzęta/Użytkownik_1zwierzęta
inventories/User_1wyposażenie

Wszystkie metody operacji magazynu danych weryfikujące wszystkie wpisy wymagają Scope parametru dla g

Dodatkowo, jeśli chcesz wymienić wszystkie klucze przechowywane w magazynie danych, które mają

Nie możesz przeprowadzić Scope i AllScopes parametrów na tej samej prośba, w przeciwnym wypadku wezwanie zwraca błąd. Wykorzystując funkcje pomocnicze z otwartych API Open Cloud dla modułu magazynowania danych, poniższy kod pokazuje, jak można czytać każdy klucz w magazynie danych z niestandardowym zakresem:

Lista kluczy dla różnych zakresów

# Zacznij
import tutorialFunctions
DatastoresApi = tutorialFunctions.DataStores()
datastoreName = "PlayerInventory"
# Lista kluczy dla globalnego zakresu
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)
print(keys.content)
# Lista kluczy do specjalnego zakresu
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)
print(keys.content)
# Lista kluczy dla wszystkich zdefiniowanych wielkości listy
specialScopeKeys = DatastoresApi.list_entries(datastoreName, allScopes = True)
print(specialScopeKeys.content)

Klucze z odpowiednim zakresem są zwracane w odpowiedzi:

Przykłady odpowiedzi na różne zakresy

// Odpowiedź dla globalnego zakresu
{ "keys": [{ "scope": "global", "key": "User_2" }], "nextPageCursor": "" }
// Odpowiedź dla specjalnego zakresu
{"keys":[{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
// Odpowiedź dla wszystkich skopów
{"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":""}

Treść-MD5

Content-MD5 to MD5 checksum w wersji podstawowej danych. Jest to opcjonalny nagłowiek wątku dla Set Entry w celu sprawdzenia integrności danych i wykrywania potencjalnych problemów.

Możesz użyć języka swojego wyboru, aby obliczyć wartość nagłówka content-md5. Poniższy przykład używa Pythonu. Funkcje hashlib.md5() i base64.b64Encode() są dostępne w standardowych bibliotekach Python (2.7, 3+).

Generowanie treści - MD5

# Z wymaganiami
$ 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==
# Używanie tylko stdin istdout
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"
sTf90fedVsft8zZf6nUg8g==

Jeśli napotkasz problemy z generowaniem ważnej wartości content-md5, możliwe, że musisz zeszyfrować swoje ciało w UTF-8 binarnie, zanim będziesz mógł użyć funkcji sprawdzania podsumowania.

Kursory

Końce może również zwrócić nextPageCursor ciąg. To wskazuje, że jest więcej danych dostępnych w ustawiaćwyników wymaganym. Aby go otrzymać, zapewnij tę stronę w parametrze cursor w następnym prośba. Jeśli parametr kurser jest zapewniony, ale nieprawidłowe, końcik zwraca 400 Bad Request

格式m stron kursoра nie jest zdefiniowanych. Nie powinieneś interpretować lub przetwarzać ich, ponieważ mogą one się zmienić w każdym czasie.

Filtry

Podczas wysyłania prośb do metody List > metody dla przechowywanych danych, możesz dodać opcjonalny parametr filter do powrotu wpisów z wartościami w określonym zakresie.

Parametr filter wspiera jeden operator logiczny, &&, i dwa operatory porównania, <=, dla ustawienia maksymalnej wartości i 2>MAX2> dla ustawienia minimalnej wartości. Jeśli chcesz ustawić zasięg z maksymalną i minimalną wartością, dodaj 5>anda5> pomiędzy dwoma sekwencjami.

Na przykład, aby zwrócić wpisy z wartościami mniejszymi lub równymi 10, musisz wpisać entry <= 10 jako wartość filter. Aby zwrócić wpisy z wartościami pomiędzy 10 i 50, wprowadź entry <= 50 && entry >= 10 .

Poniższe przykłady są nieprawidłowe wartości filter, które mogą spowodować niepowodzenie Twoich wniosków:

  • entry <= 10 - nie ma białej przestrzeni między każdą częścią sekwencji.
  • 10 <= entry - entry i wartość porównania jest na złej stronie.
  • entry <= 10 && entry <= 50 - && można używać tylko do określenia zasięgu z dwoma operatorami porównania dla wartości min i maks.

Pozwól na brakujące flagi

Podczas wysyłania prośb do metody Update , aby zaktualizować istniejący zapis danych zamówionych, możesz dodać opcjonalną etykietę allow_missing, aby umożliwić utworzenie zapisu nawet jeśli zapis nie istnieje.

Kiedy ustawisz flagę allow_missing na True :

  • Jeśli wpis nie istnieje, odpowiedź zwraca nowy wpis.

  • Jeśli wpis istnieje, ale zawartość odpowiada obecnej wartości wpisu, istniejący wpis pozostaje niezmieniony.

  • Jeśli wpis istnieje, a treść nie odpowiada istniejącej wartości wpisu, odpowiedź zwraca wpis z aktualną wartością nową.