Xử lý yêu cầu API đối với Data Stores

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

Trước khi gửi các yêu cầu để mở Cloud APIs cho lưu trữ dữ liệu tiêu chuẩnlưu trữ dữ liệu đã đặt, bạn cần hiểu cách xử lý chúng một cách hợp lý. Đối với thông tin về sử dụng API, hãy xem Hướng dẫn sử dụng.

Authentification

Giống như tất cả các API Open Cloud, các điểm kết nối lưu trữ dữ liệu yêu cầu tất cả các yêu cầu bao gồm x-api-key header, which contains an API key with enough permissions for the request. This requires you to apply the key to the experience and the data cửa hàng, and the endpoint operation is

Tăng tốc

Tất cả các đầu mối có hai loại hạn chế cấp độ thiết bị: yêu cầu-per-minute throttlingthroughput throttling . Với mọi kinh nghiệm, yêu cầu-per-minute throttling cho phép bạn gửi một

Ngược với Lua API, giới hạn này hiện không bị thay đổi dựa trên số lượng người dùng. Vượt quá các giới hạn này khiến cho đầu mối trở lại 429 Too Many Requests .

Giới hạn tốc độ giảm dữ liệu tiêu chuẩn

Yêu cầu loạiPhương phápGiới hạn tốc độ
Viết

  • Tạo mục
  • Tăng mục
  • Xóa mục
  • 10 MB/min/universe write throughput
  • 300 requs/min/universe
Đọc

    Lưu trữ dữ liệu danh sách Lưu trữ hồ sơ Nhận hồ sơ 1> Lưu trữ phiên bản hồ sơ1>

    4> Nhận bản sao hồ sơ

    4>

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

Đã đặt hạn chế tốc độ của Data Stores

Yêu cầu loạiPhương phápGiới hạn tốc độ
Viết
  • Tạo mới
  • Tăng trưởng
  • Cập nhật
  • 1> Xóa mục tử1> >

  • 300 requs/min/universe
Đọc

  • Danh sách
  • Nhận
  • >

  • 300 requs/min/universe

Xác minh dữ liệu

Trước khi gửi yêu cầu của bạn, hãy chắc chắn rằng các tham số cầu nối được xác định trên các yêu cầu hình thức và hạn chế dựa trên bảng sau đây. Các tham số cụ thể có thể có các yêu cầu bổ sung ngoài các yêu cầu này. Nếu một tham số không đáp ứng các

NhậpKiểuGhi chú
universeIdcon số
  • Nhận dạng độc đáo của trải nghiệm của bạn. Tham khảo Universe ID .
datastoreNamechuỗi
  • Chiều dài phải dưới 50 octet hoặc ít hơn.
  • Không thể là null hoặc trống.
scopechuỗi
  • Phạm vi của một cơ sở cửa hàngliệu. Xem Phạm vi .
  • Chiều dài phải là 50 octet hoặc ít hơn.
entryKeychuỗi
  • Chiều dài phải dưới 50 octet hoặc ít hơn.
  • Không thể là null hoặc trống.
content-md5chuỗi

  • Số mã MD5 đã được mã hóa base-64
  • của nội dung. Xem Content-MD5 .

    .

roblox-entry-attributeschuỗi
  • Serialized bởi đối tượng JSON.
  • Chiều dài phải nhỏ hơn 300 bản.
roblox-entry-useridsChuỗi
  • Serialized bởi JSON array of 0-4 numbers.
  • Không hơn 4 user IDs.
cursorchuỗi
  • Một chỉ số cho thấy nhiều dữ liệu hơn có sẵn trong kết quả yêu cài đặt. Thấy Cursors .

ID Universe

ID Universe là một nhận dạng độc nhất của trải nghiệm mà bạn muốn truy cập vào kho dữ liệu của bạn. Giá trị của một nhận dạng Universe là giá trị của nó DataModel.GameId , không phải là giá trị Class.Data

Bạn có thể nhận được ID Thế giới của một trải nghiệm bằng các bước sau đây:

  1. Tìm trải nghiệm với các cửa hàng dữ liệu bạn muốn truy cập.

  2. Nhấp vào nút trên hình ảnh mục tiêu để hiển thị một danh sách lựa chọn, sau đó chọn Nhân bản ID Universe .

    Copy Universe ID option from Creator Dashboard

Tầm nhìn

Bạn có thể tổ chức các kho dữ liệu của bạn bằng cách cài đặt một chuỗi độc nhất với một phạm vi mà xác định một thư mục cho mục. Sau khi bạn cài đặt một phạm vi, nó sẽ tự động gắn với tất cả các chìa khóa trong tất cả các hoạt

Phạm thể hóa dữ liệu của bạn bằng một chuỗi và một dấu chia câu với "/", ví dụ như:

Chìa khóaTầm nhìn
ngôi nhà/User_1ngôi nhà
thú cưng/User_1thú cưng
inventory/Người dùng_1kho

Tất cả các biểu tượng dữ liệu lưu trữ đều có một Scope

Ngoài ra, nếu bạn muốn đếm tất cả các chìa khóa đ

Bạn không thể đi qua ScopeAllScopes các tham số trên cùng một yêu cầu, nếu không, gọi sẽ trả lại một lỗi. Tận dụng các chức năng giúp đỡ từ các API Open Cloud cho các kho dữ liệu, mã sau đây minh họa cách bạn có thể đọ

Danh sách các phím cho các kích thước khác nhau

# Tạo dựng
import tutorialFunctions
DatastoresApi = tutorialFunctions.DataStores()
datastoreName = "PlayerInventory"
# Danh sách các khóa cho phạm vi toàn cầu
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "global", allScopes = False)
print(keys.content)
# Danh sách các khóa cho phạm vi đặc biệt
specialScopeKeys = DatastoresApi.list_entries(datastoreName, scope = "special", allScopes = False)
print(keys.content)
# Danh sách các khóa cho tất cả các cấu hình của các mô-đun được đặt trên true
specialScopeKeys = DatastoresApi.list_entries(datastoreName, allScopes = True)
print(specialScopeKeys.content)

Các khóa với phạm vi tương ứng được trả trong trả lời:

Các câu trả lời ví dụ cho các kích thước khác nhau

// Phản hồi cho phạm vi toàn cầu
{ "keys": [{ "scope": "global", "key": "User_2" }], "nextPageCursor": "" }
// Phản hồi cho phạm vi đặc biệt
{"keys":[{"scope":"special","key":"User_6"},{"scope":"special","key":"User_7"}],"nextPageCursor":""}
// Phản hồi cho tất cả các kích thước
{"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":""}

Nội dung MD5

Content-MD5 là base-64> encased MD5 checksum của nội dung. Nó là một đầu mối yêu cầu bắt buộc cho điểm cuối Set Entry kiểm tra tính hợp lệ của dữ liệu và phát hiện các vấn đề tiềm năng.

Bạn có thể sử dụng ngôn ngữ bạn chọn để tính giá trị của content-md5 đầu tiêu. Các ví dụ sau đây sử dụng Python. Các hàm hashlib.md5()base64.b64Encode() có sẵn trong các thư viện ngôn ngữ tiêu chuẩn của Python (2.7,

Tạo nội dung bằng MD5

# Với các hộp thoại
$ 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==
# Sử dụng chỉ stdin và stdout
$ echo "750" | python -c "import base64, hashlib; print(str(base64.b64encode(hashlib.md5(bytes(input(), encoding='utf8')).digest()), encoding='utf8'))"
sTf90fedVsft8zZf6nUg8g==

Nếu bạn gặp phải vấn đề tạo một giá trị content-md5 hợp lệ, bạn có thể cần phải mã hóa cơ thể yêu cầu của mình trong UTF-8 trong máy chủ trước khi tính toán checksum.

Các chuột

Các điểm cuối cũng có thể trả lại một nextPageCursor chuỗi. Điều này cho thấy rằng có nhiều dữ liệu hơn có sẵn trong kết quả yêu cài đặtđược yêu cầu. Để nhận nó, cung cấp chuỗi này trong cursor tham

Định dạng chuỗi cursor là không được xác định . Bạn không nên hiểu hoặc phân tích chúng vì chúng có thể thay đổi bất cứ lúc nào.

Bộ lọc

Khi gửi các yêu cầu đến phương thức List > cho các kho dữ liệu đã được đặt hàng, bạn có thể thêm một điều kiện filter yêu cầu tùy chỉnh để trả lại các hàng với giá trị trong một phạm vi được xác định.

Tham số filter hỗ trợ một trình đơn nhận dạng, && , và hai trình đơn so sánh, <= để cài đặt giá trị tối đa và 1> >=1> để cài đặt giá trị tối thiểu. N

Ví dụ, để đảo lại các hàng với giá trị nhỏ hơn hoặc bằng 10, bạn cần phải nhập entry <= 10 như giá trị filter . Để đảo lại các hàng với giá trị giữa 10 và 50, bạn cần phải nhập entry <= 50 && entry >= 10 .

Các ví dụ sau đây là những giá trị filter sai có thể làm mất yêu cầu của bạn:

  • entry <= 10 - không có khoảng trống giữa mỗi phần của chuỗi.
  • 10 <= entry - entry và giá trị so sánh ở phía sai.
  • entry <= 10 && entry <= 50 - &&> chỉ có thể được sử dụng để xác định một phạm vi với hai người số lượng so sánh cho giá trị tối thiểu và tối đa.

Cho phép thiếu các cờ

Khi gửi các yêu cầu đến phương thức Update để cập nhật một điều khoản dữ liệu đã được đặt hàng, bạn có thể thêm một lá thẻ bắt buộc allow_missing để cho phép sự tạo thành một điều khoản ngay cả khi điều khoản đó kh

Khi bạn đặt cờ allow_missing để True :

  • Nếu mục này không tồn tại, câu trả lời sẽ trả lại một mục mới.

  • Nếu mục tồn tại nhưng nội dung trùng với giá trị hiện tại của mục, mục tồn tại hiện tại sẽ không thay đổi.

  • Nếu mục nhập tồn tại và nội dung không khớp nối với giá trị nội dung hiện tại của mục nhập, kết quả sẽ trả lại mục nhập với giá trị nội dung đã cập nhật.