Standart veri depoları ve siparişli veri depoları için Open Cloud API'lere istek göndermeden önce, onları nasıl doğru bir şekilde ele alacağınızı anlamanız gerekir.API'nin kullanımıyla ilgili bilgi için Kullanım Kılavuzu'ya bakın.
Otorizasyon
Tüm Açık Bulut API'leri gibi, veri depolama uç noktaları, isteğe yetecek yeterli izine sahip bir API anahtarı içeren x-api-key başlığını içerecek tüm talepihtiyaç duyar.Bunun için anahtarı deneyime ve veri mağazauygulamanız ve son nokta işlemine izin verilmesi gerekir.Anahtar geçersizse, 403 Unauthorized döndürülür.API anahtarları hakkında daha fazla bilgi için, API anahtarlarını yönetin .
Hızlandırma
Tüm uç noktaların iki tür evren seviyesi sınırlaması vardır: dakika başına istek sınırlaması ve veri akışı sınırlaması .Her deneyimde, dakika başına istek sınırlaması belirli bir sayıda istek göndermenize izin verir ve veri akışı sınırlaması sayısı API anahtarlarına bağlı olmaksızın dakika başına belli bir miktar veri göndermenize izin verir.
Luau API'den farklı olarak, bu sınırlar şu anda kullanıcı sayısına göre ölçeklenmiyor. Bu sınırları aşmak, uç noktanın 429 Too Many Requests dönmesine neden oluyor.
Standart veri depoları sınırlandırma sınırları belirler
İstek yaz | Metodu | Gaz sınırları |
---|---|---|
Yaz |
|
|
Oku |
|
|
Sıralanmış veri depoları sınırlandırma sınırları belirledi
İstek yaz | Metodu | Gaz sınırları |
---|---|---|
Yaz |
|
|
Oku |
|
|
Giriş doğrulaması
talepgöndermeden önce, aşağıdaki tabloya dayalı biçimlendirme gereksinimleri ve kısıtlamalarına dayalı olarak son nokta parametlerinin geçerli olduğundan emin olun.Bireysel son noktalar bunların ötesinde ek gereksinimlere sahip olabilir.Bir parametre aşağıdaki kısıtlamaları karşılamıyorsa, uç nokta bir 400 Bad Request döndürür.
Giriş | Tür | Notlar |
---|---|---|
universeId | sayı |
|
datastoreName | dize |
|
scope | dize |
|
entryKey | dize |
|
content-md5 | dize |
|
roblox-entry-attributes | dize |
|
roblox-entry-userids | Dize |
|
cursor | dize |
|
Evren ID'si
Evren ID'si veri depolarına erişmek istediğin deneyimin benzersiz tanımlayıcısıdır.Bir deneyimin Evren ID'si, DataModel.GameId , aynı değil , Başlangıç Yeri ID'si , bir deneyimin başlangıç yerini tüm deneyimden değil tanımlayan değerdir.
Deneyimin Evren ID'si ini aşağıdaki adımlarla elde edebilirsiniz:
Navigate to the Yaratıcı Panosuna.
Erişmek istediğiniz veri depolarıyla deneyimi bulun.
Deneyimin küçük küçük resimüzerine gelin, ⋯ düğmesine tıklayın ve Evren ID'sini kopyala seçin.
Alanlar
Giriş için bir alt klasör belirleyen benzersiz bir dizeyi bir alan olarak ayarlayarak veri depolarını düzenleyebilirsiniz.Bir sınır belirledikten sonra, veri mağazayapılan tüm operasyonlardaki tüm anahtarlara otomatik olarak eklenir.Alanlar isteğe bağlıdır ve varsayılan olarak standart veri depoları için global iken, siparişli veri depoları için gereklidir.
Alan, verilerinizi bir dize ve "/" ile ayrıcı ile kategorize eder, örneğin:
Anahtar | Alanı |
---|---|
evler/Kullanıcı_1 | evler |
evcil hayvanlar/Kullanıcı_1 | evcil hayvanlar |
enventory/Kullanıcı_1 | envanteroluştur |
Tüm veri depolama giriş işlemlerinin, varsayılan olmayan bir alanda depolanan girişlere erişmeniz gerektiğinde Scope çözüm parametreleri vardır.Örneğin, varsayılan 1234 alanı altında bir global anahtarı ve aynı anahtar special alanı altında olabilir.Öncekiye scope parametresini kullanmadan erişebilirsiniz, ancak sonuncuya erişmek için scope parametresini veya API çağrıları olarak belirtmeniz gerekir.
Ayrıca, bir veri depolamasında bir veya daha fazla varsayılmayan alanı olan tüm anahtarları saymak istiyorsanız, parametresini yöntemi olarak ayarlayabilirsiniz, bu durumda çağrı bir anahtar dize ve alanı içeren bir tuplu döndürür.Önceki örnekte, List Entries her ikisini de döndürecekti ( 1234 , global ), ve ( 1234 , special ) yanıtında.
Aynı talepScope ve AllScopes parametlerini geçemezsiniz, aksi takdirde çağrı bir hata döndürür.Veri depolama modülü için Açık Bulut API'lerinden yardımcı işlevleri kullanarak, aşağıdaki kod bir veri deposundaki her anahtarı özel bir alanla nasıl okuyabileceğinizi gösterir:
Farklı alanlar için anahtar listesi
# Kurulumimport tutorialFunctionsDatastoresApi = tutorialFunctions.DataStores()datastoreName = "PlayerInventory"# Küresel ölçek için anahtarları listelespecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)print(keys.content)# Özel alan için anahtarları listelespecialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)print(keys.content)# Tüm alanın anahtarlarını doğruya ayarla List keys for allScope set to truespecialScopeKeys = DatastoresApi.list_entries(datastoreName, allScopes = True)print(specialScopeKeys.content)
Eşleşen alanı olan anahtarlar yanıt olarak döndürülür:
Farklı alanlar için örnek yanıtlar
// Küresel ölçek için yanıt
{ "keys": [{ "scope": "global", "key": "User_2" }], "nextPageCursor": "" }
// Özel alan için yanıt
{"keys":[{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
// AllScopes için Yanıt
{"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":""}
Yazınız-MD5
Content-MD5, içeriğin temel-64 kodlanmış MD5 özeti olduğu içeriğin.Veri bütünlüğünü kontrol eden ve potansiyel sorunları tespit eden Girişi Ayarla uç noktası için opcional bir istek başlığıdır.
Seçtiğiniz dili kullanarak content-md5 başlığının değerini hesaplayabilirsiniz.Aşağıdaki örnek Python kullanır.hashlib.md5() ve base64.b64encode() fonksiyonları Python standart kütüphanelerinde mevcuttur (2.7, 3+).
İçerik-MD5 oluşturma
# İstemlerle$ 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==# Sadece stdin ve stdout'u kullanarak$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"sTf90fedVsft8zZf6nUg8g==
Geçerli bir content-md5 değeri üretmek için sorunlarla karşılaşırsanız, kontrol özetini hesaplamadan önce istek gövdesini UTF-8 kodlamanız gerekebilir.
Kursörler
Veri listeleri döndüren son noktalar ayrıca bir nextPageCursor dizidöndürebilir.Bu, talep edilen sonuç ayarladaha fazla veri mevcut olduğunu gösterir.Almak için, bir sonraki istekte cursor sorgu parametresine bu dizeyi verin.Eğer cursör parametri sağlanır ancak geçersizse, uç nokta 400 Bad Request döndürür.
Kurma içi işaret dizgilerinin biçimi tanımlanmamıştır . Herhangi bir zamanda değişebilecekleri için onları yorumlamanız veya parçalamanız gerekir.
Filtler
Siparişli veri depoları için List yöntemine istek gönderirken, belirli bir menzilde değerleri olan girişleri geri döndürmek için seçici bir filter sorgu parametresi ekleyebilirsiniz.
The filter parametresi bir mantık operatörü destekler, && , ve iki karşılaştırma operatörü, <= , maksimum değeri ayarlamak ve minimum değeri ayarlamak için ve >= , minimum değeri ayarlamak için.Hem maksimum hem de minimum değerle bir menzil belirlemek istiyorsanız, iki sıra arasında && ekleyin.
Örneğin, 10'dan daha az veya eşit değerlerle girişleri geri döndürmek için, entry <= 10 değeri olarak filter girmeniz gerekir.10 ile 50 arasında değerleri olan girişleri geri döndürmek için entry <= 50 && entry >= 10 girin.
Aşağıdaki örnekler, isteklerinizin başarısız olmasına neden olabilecek yanlış filter değerlerdir:
- entry <= 10 - sırayın her bir parçası arasında boşluk yok.
- 10 <= entry - entry ve karşılaştırma değeri yanlış tarafta.
- entry <= 10 && entry <= 50 - && sadece minimum ve maksimum değerler için iki karşılaştırma operatörü ile bir menzil belirtmek için kullanılabilir
Kayıp bayrakları izin ver
Mevcut bir siparişli veri depolama girişini güncelleştirmek için Update yöntemine istek gönderirken, giriş mevcut olmasa bile bir giriş oluşturulmasına izin vermek için isteğe bağlı bir allow_missing bayrağı ekleyebilirsiniz.
allow_missing bayrağını True olarak ayarladığınızda:
Giriş mevcut değilse, yanıt yeni bir giriş döndürür.
Giriş mevcutsa ancak içerik girişin mevcut değerine uyuyorsa, mevcut giriş değiştirilmez.
Giriş mevcutsa ve içerik girişin mevcut değerine uymuyorsa, yanıt güncellenmiş yeni içerik değeri ile girişi geri gönderir.