Handling API Requests per Data Stores

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Prima di inviare richieste di Open Cloud API per archivi di dati standard e archivi di dati ordinati, devi capire come gestirli correttamente. Per informazioni sull'uso dell'API, vedi il Guida all'uso.

Autorizzazione

Come tutte le API Open Cloud, i punti di fine del magazzino dei dati richiedono tutte le richieste per includere l'x-api-key header, che contiene un'API chiave con abbastanza autorizzazioni per la Richiesta. Ciò richiede che tu applichi la chiave all'esperienza e al Negoziodei dati, e l'operazione del punto di fine è autorizzata. Se la chiave non è val

Acceleratore

Tutti gli endpoint hanno due tipi di livello di universe level throttling: richiesta-per-minuto throttling e attraverso il filtro di velocità . Con ogni esperienza, richiesta-per-minutoธrottling ti consente di inviare un certo numero di richieste al minuto, e 1> attraverso il filtro di velocitàธrottling1> ti

A differenza dell'API Lua, questi limiti attualmente non si basano sui conti utente. L'eccesso di questi limiti fa in modo che l'endpoint restituisca 429 Too Many Requests .

Limiti di velocità di archiviazione standard

Tipo di richiestaMetodoLimitazioni acceleratore
Scrivi

  • Imposta entrata
  • Incrementa l'entrata
  • Elimina l'entrata
  • >

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

    List Data Stores List Entries Get Entry 1> List Entry Versions1>

    4> Get Entry Version

    4>

  • 20 MB/min/universe write throughput
  • 300 requis/min/universe

Ordinamento dei limiti di velocità dei magazzini dei dati

Tipo di richiestaMetodoLimitazioni acceleratore
Scrivi
  • Crea
  • Aggiorna
  • Aggiorna
  • 1> Elimina 1>

  • 300 requisiti/min/universo
Leggi
  • Lista
  • Get
  • 300 requisiti/min/universo

Validazione dell'input

Prima di inviare la tua Richiesta, assicurati di validare i parametri端口 in base ai requisiti di formattazione e restrizioni sulla tabella seguente. I singoli端口 possono avere ulteriori requisiti oltre a queste. Se un parametro non soddisfa le seguenti restrizioni, il端口 restituisce un 400 Bad Request .

InserisciTipoNote
universeIdnumber

  • L'identificatore unico della tua esperienza. Vedi ID Universe .
  • >

datastoreNamestringa
  • La lunghezza deve essere di 50 pixel o inferiore.
  • Non può essere nullo o vuoto.
scopestringa
  • La portata di un Negoziodi dati. Vedi Scoperte .
  • La lunghezza deve essere inferiore a 50 pixel o meno.
entryKeystringa
  • La lunghezza deve essere di 50 pixel o inferiore.
  • Non può essere nullo o vuoto.
content-md5stringa
roblox-entry-attributesstringa
  • SerIALizzato dall'oggetto JSON.
  • La lunghezza deve essere inferiore a 300 byte.
roblox-entry-useridsStringa

    SerIALizzato dall' array JSON di 0-4 numeri.

  • Non più di 4 ID utente.
cursorstringa

  • Un indicatore di più dati disponibili nel risultato richiesto. Vedi Cursori .
  • >

ID dell'Universo

L'ID dell'Universo è l'identificatore unico dell'esperienza in cui vuoi accedere ai tuoi store di dati. Il valore di un'esperienza di ID dell'Universo è il valore del suo DataModel.GameId, non Class.DataModel.GameId che identifica il luogo di partenza di un'esperienza piuttosto che l'intera esperienza.

Puoi ottenere l'ID dell'Universo di un'esperienza con i seguenti passaggi:

  1. Trova l'esperienza con i magazzini di dati che vuoi Accesso.

  2. Fai clic sul pulsante sulla miniatura dell'esperienza target per visualizzare una lista di opzioni, quindi seleziona Copia ID dell'universo .

    Copy Universe ID option from Creator Dashboard

Campi di visione

Puoi organizzare i tuoi magazzini dati impostando una singola stringa come scala che specifica una subcartella per l'elemento. Una volta impostata una scala, viene automaticamente aggiunta a tutte le chiavi in tutte le operazioni eseguite sul Negoziodati. Le scala sono opzionali e per impostazione predefinita come global per i magazzini dati standard ma richieste per i magazzini dati ordinati.

La categoria di dati consente di categorizzare i tuoi dati con una stringa e un separatore con "/", come segue:

ChiaveScopo
case/User_1case
pets/Utente_1animale domestico
inventario/User_1inventario, reportorio

Tutti i metodi di entrata del magazzino di dati hanno un Scope parametro per quando si deve accedere alle ent

Inoltre, se vuoi elencare tutte le chiavi memorizzate in un data store che hanno uno o più scopi non predefiniti, puoi

Non puoi passare Scope e AllScopes parametri sullo stesso Richiesta, altrimenti la chiamata restituisce un errore. L'uso delle funzioni di aiuto dalle API Open Cloud per i datastore moduli, il seguente codice illustra come puoi leggere ogni chiave in un datastore con uno scopo personalizzato:

Elenca i tasti per diversi scopi

# Configurare
import tutorialFunctions
DatastoresApi = tutorialFunctions.DataStores()
datastoreName = "PlayerInventory"
# Elenca le chiavi per l'ambito globale
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)
print(keys.content)
# Elenca le chiavi per lo scopo speciale
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)
print(keys.content)
# Elencare le chiavi per tutti gli script set to true
specialScopeKeys = DatastoresApi.list_entries(datastoreName, allScopes = True)
print(specialScopeKeys.content)

Le chiavi con lo spettro corrispondente sono restituite nella risposta:

Risposte di esempio per diversi campi di visione

// Risposta per l'ambito globale
{ "keys": [{ "scope": "global", "key": "User_2" }], "nextPageCursor": "" }
// Risposta per lo scope speciale
{"keys":[{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
// Risposta per AllScopes
{"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":""}

Contenuto-MD5

Content-MD5 è il base-64 encoded MD5 checksum di contenuto. È un richiesta opzionale per il Set Entry punto di interruzione che controlla l'integrità dei dati e rileva potenziali problemi.

Puoi usare il linguaggio di tua scelta per calcolare il valore del content-md5 header. L'esempio seguente usa Python. Le funzioni hashlib.md5() e base64.b64 encode() sono disponibili nelle librerie standard di Python (2.7, 3+).

Generazione di contenuti-MD5

# Con messaggi di prom示
$ 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==
# Uso solo di cmd e cmd
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"
sTf90fedVsft8zZf6nUg8g==

Se ti imbatti in problemi durante la generazione di un valore content-md5 valido, potresti dover incodificare il tuo corpo di richiesta in UTF-8 prima di calcolare il checksum.

Cursores

I punti di fine potrebbero anche restituire una StringanextPageCursor . Ciò indica che ci sono più dati disponibili nel risultato richiesto. Per riceverlo, fornisci questa stringa nel parametro di Richiestacursor . Se il parametro di richiesta non è fornito ma Non valido, il punto di fine restituisce 400 Bad Request.

Il formato delle stringhe del cursore non è non definito . Non dovresti interpretarli o parlarli come potrebbero cambiare in qualsiasi momento.

Filtra

Quando si inviano richieste al metodo List per i magazzini di dati ordinati, si può aggiungere un parametro di query opzionale filter per restituire gli elementi con valori in un intervallo specificato.

Il parametro filter supporta un operatore logico, && , e due operatori di confronto, <= per impostare il valore massimo e 1> >=1> per impostare il valore minimo. Se vuoi impostare una gamma con un valore massimo e un valore minimo, aggiungi 4> &&4> tra le due sequenze.

Ad esempio, per restituire gli elementi con valori che sono inferiore o uguale a 10, devi inserire entry <= 10 come valore filter . Per restituire gli elementi con valori tra 10 e 50, inserisci entry <= 50 && entry >= 10 .

I seguenti esempi sono corretti filter valori che possono fallire le tue richieste:

  • entry <= 10 - niente spazio tra ciascuna parte della sequenza.
  • 10 <= entry - entry e il valore di confronto è sul lato sbagliato.
  • entry <= 10 && entry <= 50 - && può essere utilizzato solo per specificare un intervallo con entrambi gli operatori di confronto per il valore minimo e massimo.

Consenti bandiere mancanti

Quando si inviano richieste al metodo Update per aggiornare un'archiviazione di dati ordinati esistente, si può aggiungere un flag opzionale allow_missing per consentire la creazione di un'archiviazione anche se l'archiviazione non esiste.

Quando impostate il allow_missing flag a True :

  • Se l'elemento non esiste, la risposta restituisce un nuovo elemento.

  • Se l'entry esiste ma il contenuto corrisponde al valore esistente dell'entry, l'entry esistente rimane inalterato.

  • Se l'entry esiste e il contenuto non corrisponde al valore di aggiornamento dell'entry, la risposta restituisce l'entry con il nuovo valore di contenuto aggiornato.