การร้องขอ HTTP ในเกม

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

คุณสามารถใช้ HttpService เพื่อส่งคำร้อง HTTP ทั่วไปไปยังบริการเว็บของบุคคลที่สามสำหรับกรณีการใช้งานเช่นการวิเคราะห์ การจัดเก็บข้อมูล หรือการบันทึกข้อผิดพลาด HttpService ยังรองรับบางจุดสิ้นสุดของ Open Cloud

เปิดใช้งานคำร้อง HTTP

วิธีการ HttpService:GetAsync(), HttpService:PostAsync(), และ HttpService:RequestAsync() จะไม่เปิดใช้งานโดยค่าเริ่มต้น เพื่อส่งคำร้อง คุณต้อง อนุญาตคำร้อง HTTP ภายใต้ ไฟล์การตั้งค่าประสบการณ์ความปลอดภัย ใน Studio

ใช้ในปลั๊กอิน

คุณสามารถใช้ HttpService ในปลั๊กอินของ Studio เพื่อตรวจสอบการอัปเดต ดาวน์โหลดเนื้อหา หรือธุรกิจอื่น ๆ ครั้งแรกที่ปลั๊กอินพยายามใช้บริการ ผู้ใช้อาจถูกขอให้อนุญาตปลั๊กอินในการสื่อสารกับที่อยู่เว็บเฉพาะ ผู้ใช้สามารถยอมรับ ปฏิเสธ และเพิกถอนสิทธิ์เหล่านี้ได้ตลอดเวลาผ่านหน้าต่าง การจัดการปลั๊กอิน

ปลั๊กอินยังสามารถสื่อสารกับซอฟต์แวร์อื่นที่ทำงานบนคอมพิวเตอร์เดียวกันผ่านโฮสต์ localhost และ 127.0.0.1 โดยการเรียกใช้โปรแกรมที่เข้ากันได้กับปลั๊กอินดังกล่าว คุณสามารถขยายฟังก์ชันการทำงานของปลั๊กอินของคุณให้เกินความสามารถปกติของ Studio เช่น การโต้ตอบกับระบบไฟล์ของคอมพิวเตอร์ของคุณ โปรดระวังว่าซอฟต์แวร์ดังกล่าวต้องแจกจ่ายแยกต่างหากจากปลั๊กอินเองและอาจก่อให้เกิดความเสี่ยงด้านความปลอดภัย

ใช้กับ Open Cloud

HttpService สามารถเรียกจุดสิ้นสุดของ Open Cloud ที่เป็นกลุ่มย่อยได้ในปัจจุบัน คุณสามารถเรียกจุดสิ้นสุดเหล่านี้ในลักษณะเดียวกับที่คุณเรียกจุดสิ้นสุดอื่น ๆ ผ่าน HttpService ความแตกต่างเพียงอย่างเดียวคือคุณต้องรวมคีย์ API ของ Open Cloud ในคำร้อง:

  1. ทำการร้องขอ

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการอัปเดตการเป็นสมาชิกกลุ่มของผู้ใช้จากภายในเกม:

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 ให้ตั้งค่านี้!
["x-api-key"] = HttpService:GetSecret("APIKey"), -- ตั้งค่าใน Creator Hub
},
Body = HttpService:JSONEncode({ role = `groups/{groupId}/roles/{roleId}` }),
})
if response.Success then
print("คำตอบสำเร็จ:", response.StatusCode, response.StatusMessage)
else
print("คำตอบกลับมาพร้อมข้อผิดพลาด:", response.StatusCode, response.StatusMessage)
end
print("เนื้อหาคำตอบ:\n", response.Body)
print("ส่วนหัวคำตอบ:\n", HttpService:JSONEncode(response.Headers))
end
-- ห่อฟังก์ชันใน pcall() เพื่อความปลอดภัย
local success, errorMessage = pcall(request)
if not success then
print("คำร้อง HTTP ล้มเหลวในการส่ง:", errorMessage)
end

จุดสิ้นสุดของ Open Cloud ที่รองรับ

จุดสิ้นสุดต่อไปนี้ได้รับการสนับสนุน เนื่องจากข้อจำกัดในปัจจุบันเกี่ยวกับ HttpService สตริง .. จะไม่อนุญาตในพารามิเตอร์เส้นทาง URL ไปยังโดเมน Roblox ซึ่งหมายความว่า ตัวอย่างเช่น สตอเรจข้อมูลและรายการที่มีสตริงนี้จึงไม่สามารถเข้าถึงได้จาก HttpService

สินทรัพย์

การแบนและบล็อก

การตั้งค่า

ร้านค้าผู้สร้าง

ผลิตภัณฑ์นักพัฒนา

เกมพาส

สตอเรจข้อมูลและหน่วยความจำ

สตอเรจข้อมูล:

หน่วยความจำ:

สตอเรจข้อมูลที่เรียงลำดับ:

กลุ่ม

สินค้าคงคลัง

การดำเนินการ Luau

การแจ้งเตือน

สถานที่

จักรวาล

ผู้ใช้

ข้อจำกัด

  • อนุญาตเฉพาะส่วนหัว x-api-key และ content-type เท่านั้น
  • ส่วนหัว x-api-key ต้องเป็น Secret ดู ที่เก็บความลับ
  • สตริง ".." จะไม่อนุญาตในพารามิเตอร์เส้นทาง URL
  • รองรับเฉพาะโปรโตคอล HTTPS เท่านั้น
  • คุณไม่สามารถใช้พอร์ต 1194 หรือพอร์ตใด ๆ ที่ต่ำกว่า 1024 ยกเว้น 80 และ 443 หากคุณพยายามใช้พอร์ตที่ถูกบล็อก คุณจะได้รับข้อผิดพลาด 403 Forbidden หรือ ERR_ACCESS_DENIED

ข้อจำกัดอัตรา

สำหรับเซิร์ฟเวอร์เกม Roblox แต่ละตัว จะมีข้อจำกัด 2500 คำร้อง Open Cloud ต่อหนึ่งนาที การเกินขีดจำกัดนี้อาจทำให้วิธีการส่งคำร้องหยุดชะงักประมาณ 30 วินาที pcall() ของคุณอาจล้มเหลวด้วยข้อความว่า จำนวนคำร้อง Open Cloud เกินขีดจำกัด

  • คำร้อง Open Cloud ไม่ ใช้ขีดจำกัดรวมเดียวกัน 500 คำร้อง HTTP ต่อหนึ่งนาทีที่บังคับใช้กับคำร้องอื่น ๆ ทั้งหมด
  • แต่ละจุดสิ้นสุดมีขีดจำกัดของตัวเองต่อเจ้าของคีย์ API (สามารถเป็นผู้ใช้หรือกลุ่ม) ที่บังคับใช้ไม่ว่าการเรียกจะมาจากที่ใด (HttpService, เว็บ ฯลฯ)

สำหรับข้อมูลรายละเอียดเกี่ยวกับข้อจำกัดอัตรา Open Cloud การจำกัดอัตราแบบอิงการรับรองความถูกต้อง และแนวทางปฏิบัติที่ดีที่สุด ดูที่ ข้อจำกัดอัตรา.

แนวทางปฏิบัติที่ดีที่สุด

เพื่อเพิ่มประสิทธิภาพการใช้งาน HttpService ของคุณและหลีกเลี่ยงการเกินขีดจำกัด ให้ใช้แนวทางปฏิบัติที่ดีที่สุดต่อไปนี้:

  • จัดการข้อผิดพลาดอย่างราบรื่น คำร้องเว็บอาจล้มเหลวได้ด้วยเหตุผลหลายประการ ใช้ pcall() และมีแผนสำหรับเมื่อคำร้องล้มเหลว นอกจากนี้ ให้ตรวจสอบและทำความสะอาดข้อมูลทั้งหมดที่ได้รับจาก API ภายนอกอย่างเข้มงวด เพื่อให้แน่ใจว่าข้อมูลถูกต้องเมื่อคุณสามารถทำได้

  • ใช้ การถอยกลับแบบเอ็กซ์โพเนนเชียล เพื่อให้ต่ำกว่าขีดจำกัด

    หากคำร้องส่งคืนข้อผิดพลาดที่สามารถกู้คืนได้ แทนที่จะลองใหม่ทันที ให้รอเป็นเวลาสองวินาที จากนั้นสี่ แปด ฯลฯ ระหว่างการพยายาม นี่ช่วยจำกัดความแออัดและเพิ่มโอกาสในการร้องขอที่ประสบความสำเร็จโดยการให้เวลาจุดสิ้นสุด "เย็นลง"

  • รวบรวมและส่งข้อมูลในกลุ่ม

    เมื่อเป็นไปได้ แนะนำให้ให้เซิร์ฟเวอร์ของคุณรวบรวมข้อมูลทั้งหมดที่จำเป็นเพื่อส่งคำร้อง HTTP หนึ่งคำร้อง แทนที่จะเป็นคำร้องเล็ก ๆ หลายคำร้อง ตัวอย่างเช่น หากคุณกำลังส่งคำร้อง HTTP สำหรับผู้เล่นทุกคนในเซิร์ฟเวอร์ของคุณ ให้ตรวจสอบว่า API มีจุดสิ้นสุดแบบกลุ่ม/แบตช์หรือไม่ และถ้าใช่ ให้รวบรวมข้อมูลจากผู้เล่นทั้งหมดและส่งทั้งหมดในคำร้องเดียว

    ในบางกรณี คุณอาจต้องใช้ HttpService:RequestAsync() เพื่อรวมข้อมูลในเนื้อหาของคำร้อง

  • ใช้จุดสิ้นสุด HTTP/2 HTTP/2 มอบประโยชน์ด้านประสิทธิภาพที่สำคัญผ่านฟีเจอร์ต่าง ๆ เช่น การบีบอัดส่วนหัวและการทำงานหลายคำร้อง/ตอบกลับผ่านการเชื่อมต่อเดียว HttpService จะใช้ HTTP/2 โดยอัตโนมัติเมื่อมีให้บริการ โปรดทราบว่าข้อกำหนด HTTP/2 กำหนดให้ชื่อส่วนหัวทั้งหมดต้องส่งในรูปแบบตัวพิมพ์เล็ก

การสังเกต

แดชบอร์ด การสังเกต ให้ข้อมูลเชิงลึกและการวิเคราะห์สำหรับการตรวจสอบและแก้ไขปัญหาการใช้งาน HttpService ของคุณ แดชบอร์ดมีกราฟหลักสองกราฟ: จำนวนคำร้อง ซึ่งติดตามปริมาณคำร้อง HttpService จากเกมของคุณ และ เวลาในการตอบกลับ ซึ่งวัดความล่าช่าสำหรับจุดสิ้นสุดในการตอบสนอง

มิติที่มีอยู่สำหรับการกรองและการแบ่งกลุ่มมีการกำหนดดังนี้:

ประเภทคำร้อง

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • อื่น ๆ (สำหรับประเภทคำร้องที่ไม่ได้ระบุ)

สถานะ

  • สำเร็จ (รหัสสถานะ HTTP 1xx และ 2xx)
  • เปลี่ยนเส้นทาง (รหัสสถานะ HTTP 3xx)
  • 400 (คำร้องไม่ถูกต้อง)
  • 401 (ไม่ได้รับอนุญาต)
  • 403 (ถูกห้าม)
  • 404 (ไม่พบ)
  • 429 (คำร้องมากเกินไป)
  • 500 (ข้อผิดพลาดภายในเซิร์ฟเวอร์)
  • 503 (บริการไม่พร้อมใช้งาน)
  • ExternalError (รหัสข้อผิดพลาดอื่น ๆ ที่ไม่ได้ระบุที่ส่งคืนจากบริการภายนอก)
  • InternalError (ปัญหาที่ส่งคืนจาก HttpService ภายใน Roblox)

กราฟ เวลาในการตอบกลับ จะไม่มีความสัมพันธ์กับข้อมูลสถานะ หากคุณเลือก "สถานะ" เป็นการแบ่งกลุ่มหรือกรอง กราฟนี้จะไม่แสดงข้อมูล

ข้อพิจารณาเพิ่มเติม

  • คำร้องควรให้รูปแบบการรับรองความถูกต้องที่ปลอดภัย เช่น คีย์ลับที่แชร์กันล่วงหน้า เพื่อไม่ให้ผู้ไม่หวังดีสามารถแอบอ้างเป็นหนึ่งในเซิร์ฟเวอร์ Roblox ของคุณ
  • โปรดทราบถึงความจุทั่วไปและนโยบายการจำกัดอัตราของเซิร์ฟเวอร์เว็บที่คำร้องถูกส่งไปยัง
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ