การส่งคำขอ HTTP ในเกม

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

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

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

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

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

คุณสามารถใช้ 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

แอสเซท

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

การตั้งค่า

ร้านค่านักพัฒนา

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

เกมพาส

คลังข้อมูลและหน่วยความจำ

คลังกข้อมูล:

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

คลังกข้อมูลที่เรียงลำดับ:

กลุ่ม

คลังสินค้า

การทำงานของ Lua

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

สถานที่

จักรวาล

ผู้ใช้

ข้อจำกัด

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

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

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

  • คำขอ Open Cloud ไม่ใช้ โควต้า 500 คำขอ HTTP ต่อ минутซึ่งบังคับใช้กับคำขออื่นๆ ทั้งหมด
  • ทุกปลายทางมีขีดจำกัดของตนเองต่อเจ้าของคีย์ API (อาจเป็นผู้ใช้หรือกลุ่ม) ซึ่งบังคับใช้ไม่ว่าเรียกจากไหน (HttpService, เว็บ ฯลฯ)

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

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

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

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

  • ใช้ การถดถอยแบบทวีคูณ เพื่อให้ต่ำกว่าขีดจำกัด

    หากคำขอส่งคืนข้อผิดพลาดที่ฟื้นตัวได้ แทนที่จะลองส่งใหม่ทันที ให้รอเป็นเวลา 2 วินาที จากนั้น 4, 8 วินาที เป็นต้น ระหว่างความพยายาม สิ่งนี้ช่วยลดความแออัดและเพิ่มโอกาสในการส่งคำขอที่ประสบความสำเร็จโดยการให้เวลาปลายทางในการ "เย็นลง"

  • รวบรวมและส่งข้อมูลในปริมาณมาก

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

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

  • ใช้ปลายทาง HTTP/2 HTTP/2 มอบประโยชน์ด้านประสิทธิภาพอย่างมากผ่านฟีเจอร์ต่างๆ เช่น การบีบอัดส่วนหัวและการมัลติเพล็กซิ่งคำขอ/การตอบสนองผ่านการเชื่อมต่อเดียว HttpService จะใช้ HTTP/2 โดยอัตโนมัติเมื่อมีให้ ใช้ข้อสังเกตว่าสpecification ของ 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ