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śby | Mето | Ograniczenia prędkości |
---|---|---|
Pisać | Ustaw Wpis Zwiększ Wpis Usuń Wpis ” |
|
Przeczytaj | Lista magazynów danych listy Lista wpisów Zdobądź wpis 1> Lista wersji wpisu1> 4> Zdobądź wersję wpisu 4> |
|
Ograniczenia prędkości dla przechowywanych danych
Typ prośby | Mето | Ograniczenia prędkości |
---|---|---|
Pisać |
1> Usuń1> |
|
Przeczytaj |
Lista listach |
|
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ście | Typ | Notatki |
---|---|---|
universeId | liczba |
|
datastoreName | struny |
|
scope | struny |
|
entryKey | struny |
|
content-md5 | struny |
|
roblox-entry-attributes | struny |
|
roblox-entry-userids | Struny |
|
cursor | struny |
|
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:
Przejdź do Panelu twórcy.
Znajdź doświadczenie z magazynami danych, do których chcesz uzyskać dostęp.
Kliknij przycisk ⋯ na miniaturze celu, aby wyświetlić listę opcji, a następnie wybierz Kopiuj ID wszechświata .
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:
Klucz | Zakres |
---|---|
domy/User_1 | domy |
zwierzęta/Użytkownik_1 | zwierzęta |
inventories/User_1 | wyposaż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
# Zacznijimport tutorialFunctionsDatastoresApi = tutorialFunctions.DataStores()datastoreName = "PlayerInventory"# Lista kluczy dla globalnego zakresuspecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)print(keys.content)# Lista kluczy do specjalnego zakresuspecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)print(keys.content)# Lista kluczy dla wszystkich zdefiniowanych wielkości listyspecialScopeKeys = 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: 750content-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ą.