HttpService'i, analitik, veri depolama veya hata kaydı gibi kullanım senaryoları için üçüncü taraf web hizmetlerine genel HTTP istekleri göndermek üzere kullanabilirsiniz. HttpService ayrıca belirli Open Cloud uç noktalarını da destekler.
HTTP isteklerini etkinleştirin
HttpService:GetAsync(), HttpService:PostAsync() ve HttpService:RequestAsync() yöntemleri varsayılan olarak etkin değildir. İstek göndermek için, oyununuz için Deneyim Ayarları altında HTTP İsteklerine İzin Ver seçeneğini etkinleştirmeniz gerekir.
Eklentilerde kullanın
HttpService'i Studio eklentilerinde güncellemeleri kontrol etmek, içerik indirmek veya diğer iş mantıkları için kullanabilirsiniz. Bir eklentinin hizmeti kullanmaya çalıştığı ilk seferde, kullanıcıdan belirli bir web adresi ile iletişim kurmasına izin vermesi istenebilir. Kullanıcılar, bu izinleri Eklenti Yönetimi penceresi aracılığıyla her zaman kabul edebilir, reddedebilir veya geri alabilir.
Eklentiler ayrıca, aynı bilgisayarda çalışan diğer yazılımlar ile localhost ve 127.0.0.1 ana bilgisayarları üzerinden iletişim kurabilir. Bu tür eklentilerle uyumlu programlar çalıştırarak, eklentinizin işlevselliğini Studio'nun normal yeteneklerinin ötesine taşıyabilirsiniz; örneğin, bilgisayarınızın dosya sistemiyle etkileşimde bulunabilirsiniz. Ancak, bu tür yazılımların eklentiden ayrı olarak dağıtılması gerektiğini ve güvenlik riskleri taşıyabileceğini unutmayın.
Open Cloud ile kullanın
HttpService şu anda Open Cloud uç noktalarının bir alt kümesini çağırabilir. Bu uç noktaları, HttpService aracılığıyla diğer uç noktaları çağırır gibi çağırabilirsiniz. Tek fark, istekte bir Open Cloud API anahtarı eklemeniz gerektiğidir:
- İsteği yapın.
Aşağıdaki kod örneği, bir oyun içinden bir kullanıcının grup üyeliğini güncellemenin nasıl yapılacağını göstermektedir:
local HttpService = game:GetService("HttpService")
local groupId = "your_group_id"
local membershipId = "your_membership_id"
local roleId = "your_role_id"
local function request()
local response = HttpService:RequestAsync({
Url = `https://apis.roblox.com/cloud/v2/groups/{groupId}/memberships/{membershipId}`,
Method = "PATCH",
Headers = {
["Content-Type"] = "application/json", -- JSON gönderirken bunu ayarlayın!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- Creator Hub'da ayarlayın
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("Yanıt başarılıydı:", response.StatusCode, response.StatusMessage)
else
print("Yanıt bir hata döndürdü:", response.StatusCode, response.StatusMessage)
end
print("Yanıt gövdesi:\n", response.Body)
print("Yanıt başlıkları:\n", HttpService:JSONEncode(response.Headers))
end
-- Güvenlik amacıyla fonksiyonu pcall() içine sarın
local success, errorMessage = pcall(request)
if not success then
print("HTTP isteği gönderilemedi:", errorMessage)
end
Desteklenen Open Cloud uç noktaları
Aşağıdaki uç noktalar desteklenmektedir. HttpService üzerindeki mevcut sınırlamalar nedeniyle, URL yol parametrelerinde .. dizesine izin verilmemektedir. Bu, örneğin HttpService üzerinden bu dizeyi içeren veri depolarının ve girişlerinin şu anda erişilemez olduğu anlamına gelir.
Varlıklar
Yasaklar ve engellemeler
Yapılandırmalar
Yaratıcı Mağazası
Geliştirici ürünleri
Oyun geçişleri
Veri ve bellek depoları
Veri depoları:
Bellek depoları:
Sıralı veri depoları:
Gruplar
Envanterler
Luau yürütmesi
Bildirimler
Yerler
Evrenseller
Kullanıcılar
Sınırlamalar
- Yalnızca x-api-key ve content-type başlıklarına izin verilir.
- URL yol parametrelerinde ".." dizesine izin verilmez.
- Sadece HTTPS protokolü desteklenmektedir.
- Port 1194 veya 1024 altındaki herhangi bir portu, 80 ve 443 portları haricinde kullanamazsınız. Engellenen bir portu kullanmaya çalışırsanız, 403 Forbidden veya ERR_ACCESS_DENIED hatası alırsınız.
Hız limitleri
Her Roblox oyun sunucusu için, dakikada 2500 Open Cloud isteği limiti vardır. Bunu aşmak, istek gönderme yöntemlerinin yaklaşık 30 saniye süreyle duraksamasına neden olabilir. pcall()'ınız, Open Cloud isteklerinin limiti aşıldı mesajıyla başarısız olabilir.
- Open Cloud istekleri, diğer tüm isteklere uygulanan dakikada 500 HTTP isteği genel limitini tüketmez.
- Her uç noktanın, API anahtar sahibi (bir kullanıcı veya grup) başına kendi limiti vardır ve çağrıların nereden geldiğine bakılmaksızın uygulanır (HttpService, web, vb.).
Open Cloud hız limitleri, kimlik doğrulama tabanlı hız sınırlaması ve en iyi uygulamalar hakkında detaylı bilgi için Hız Limitleri sayfasına bakın.
En iyi uygulamalar
HttpService kullanımınızı optimize etmek ve limitleri aşmaktan kaçınmak için aşağıdaki en iyi uygulamaları uygulayın:
Hataları nazikçe yönetin. Web istekleri birçok nedenle başarısız olabilir. pcall() kullanın ve istekler başarısız olduğunda bir planınız olsun. Ayrıca, dış API'lerden alınan tüm verileri dikkatlice doğrulayın ve temizleyin.
Limitlerin altında kalmak için üstel geri alma (exponential backoff) kullanın.
Eğer bir istek geri kazanılabilir bir hata döndürürse, hemen yeniden denemek yerine, iki saniye, ardından dört, sekiz vb. sürelerle bekleyin. Bu, yoğunluğu sınırlamaya yardımcı olur ve uç noktanın "soğuması" için zamana sahip olmasıyla başarılı bir istek şansını artırır.
Verileri toplayın ve toplu halde gönderin.
Mümkünse, sunucunuzun gerekli tüm verileri toplayarak tek bir HTTP isteği göndermesini sağlamanız önerilir. Örneğin, sunucunuzdaki her oyuncu için bir HTTP isteği gönderiyorsanız, API'nin toplu/batch bir uç noktası olup olmadığını kontrol edin ve eğer varsa, tüm oyunculardan bilgileri toplayın ve hepsini tek bir istekte gönderin.
Bazı durumlarda, isteğin gövdesinde veri dahil etmek için HttpService:RequestAsync() kullanmanız gerekebilir.
HTTP/2 uç noktalarını kullanın. HTTP/2, başlık sıkıştırması ve tek bir bağlantı üzerinden istek/cevap çokluğunu gibi özelliklerle önemli performans faydaları sağlar. HttpService mevcut olduğunda otomatik olarak HTTP/2 kullanır. HTTP/2 spesifikasyonu, tüm başlık adlarının küçük harfle gönderilmesini gerektirir.
Gözlemlenebilirlik
Gözlemlenebilirlik Gösterge Paneli, HttpService kullanımınızı izlemek ve sorunlarını tespit etmek için içgörüler ve analizler sağlar. Gösterge paneli, oyununuzdan HttpService isteklerinin hacmini izleyen İstek Sayısı ve uç noktaların yanıt süresini ölçen Yanıt Süresi olmak üzere iki ana grafiğe sahiptir.
Filtreleme ve ayrıştırma için mevcut boyutlar aşağıdaki gibi tanımlanmıştır:
İstek Türü
- GET
- POST
- PUT
- PATCH
- DELETE
- Diğer (belirtilmemiş istek türleri için)
Durum
- Başarı (HTTP 1xx ve 2xx durum kodları)
- Yönlendirme (HTTP 3xx durum kodları)
- 400 (Geçersiz İstek)
- 401 (Yetkilendirilmemiş)
- 403 (Yasak)
- 404 (Bulunamadı)
- 429 (Çok Fazla İstek)
- 500 (Sunucu İçi Hata)
- 503 (Hizmet Kullanılamıyor)
- ExternalError (dış hizmetten dönen diğer herhangi bir belirtilmemiş hata kodu)
- InternalError (HttpService tarafından Roblox içinde dönen bir sorun)
Yanıt Süresi grafiği, durum verileriyle ilişkili değildir. "Durum"u bir ayrıştırma veya filtreleme olarak seçerseniz, bu grafik veri göstermeyecektir.
Ek dikkate almanız gerekenler
- İsteklerin, kötü niyetli kişilerin biri olarak görünmesini sağlamamak için, önceden paylaşılan bir gizli anahtar gibi güvenli bir kimlik doğrulama biçimi sağlaması gerekir, böylece kötü aktörler, Roblox sunucularınızdan biri gibi davranamazlar.
- İsteklerin gönderildiği web sunucularının genel kapasite ve hız sınırlama politikalarını göz önünde bulundurun.