Skip to content

Seaty/bluepiexam

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Matching Game Card API

เป็น Service API สำหรับเกมจับคู่ ซึ่งสร้างด้วย FastAPI

ก่อนติดตั้ง

ให้ไปตั้งค่า SecretKey ของ API ด้วยการสร้าง Hex string ด้วยคำสั่ง

openssl rand -hex 32

จากนั้นในไปใส่ใน File .env

SECRET_KEY=Hex String ที่สร้างมา

ขั้นตอนการติดตั้ง

  1. ลง docker และ docker-compose ในเครื่อง
  2. Clone repository นี้ไปยังเครื่อง Production
git clone https://github.com/Seaty/bluepiexam.git
  1. cd ไปยังโฟลเดอร์ bluepiexam
cd bluepiexam
  1. ใช้คำสั่ง docker-compose build ในเทอมินอล
docker-compose build
  1. ใช้คำสั่ง docker-compose up ในเทอมินอล
docker-compose up
  1. สามารถใช้ API ได้เลย

ข้อมูลการใช้งาน API

การใช้งานลิงค์จะมี /api นำหน้า API ก่อนเรียกใช้ ตัวอย่าง

http://{HOSTNAME}/api/get_token
API Name Method คำอธิบาย ค่าที่ส่งใน body/request จำเป็นต้องใส่ Token ใน Header
/get_token POST เป็น API ที่ส่งค่า username มาเพื่อที่รับ Token ใช้ในการยืนยันตัวตนในระบบ {"username":ชื่อusername} ไม่
/start_new_game POST เป็น API สำหรับใช้กับปุ่มเริ่มเล่นเกมโดยการส่ง - จำเป็น

ข้อมูลการใช้งาน Web Socket

ขั้นตอนการใช้งาน Websocket จะใช้หลังจากที่ได้ Token ของ User แล้ว เพื่อใช้ในการดำเนินการเล่นเกม โดยมีขั้นตอนดังนี้

  1. เริ่มต้นการใช้งานโดยเชื่อมต่อมาที่ ws://{HOSTNAME}:8000/api/playgame
  2. จากนั้นให้ส่ง Token ของ User ที่ได้จาก API /get_token มาเพื่อยืนยัน
  3. หลังจากนั้นก็สามารถส่งค่าการคลิกของการ์ดได้เลย
  4. เมื่อเกมจบจะมีการส่งค่า Global Best Score และ Best Score ส่งกลับมาผ่าน Websocket

รูปแบบการส่งข้อมูลใน Websocket

รูปแบบ คำอธิบาย ตัวอย่าง
String ของ Token ส่งเพื่อทำการยืนยันตัวตนในการเล่น eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzd....
click:int ส่งค่านี้เพื่อระบุว่าผู้เล่นเปิดการ์ดตำแหน่งที่เท่าไหร่ click:1 (เปิดการ์ดตำแหน่งที่ 1)

รูปแบบการรับข้อมูลใน Websocket

รูปแบบ คำอธิบาย ตัวอย่าง
Global:int เป็นคะแนน Global Best Score ของผู้เล่นทุกคน Global:12
Score:int เป็นคะแนน Best Score ของผู้เล่นปัจจุบัน Score:20
Error:string ส่งมาเมื่อเกิดความผิดพลาดในระบบ Error: Could not validate credentials
{"pos": int, "value":int, "clicks": int} เป็นข้อมูลการเปิดการ์ด (ซึ่งจะอธิบายในตารางต่อไป) {"pos": 1, "value": 5, "clicks": 1}

ข้อมูลการเปิดการ์ด (คำอธิบาย)

ข้อมูลการเปิดการ์ดจะส่งมาในรูปแบบ JSON String ให้ทำการแปลงให้เป้น JSON ก่อน แล้วจึงนำไปใช้ โดยจะมีรายละเอียดดังนี้

property type คำอธิบาย ตัวอย่าง
pos int ตำแหน่งของ value ที่ส่งกลับมาซึ่งจะเป็นค่าเดียวกับ ตำแหน่งที่ส่งไป "pos": 1 (ตำแหน่งที่หนึ่ง)
value int ค่าของการ์ดที่หงายขึ้น โดยให้แสดงค่านี้ที่ตำแหน่งของการ์ดที่ส่งไป (pos) "value": 5 (ค่าของการ์ดคือ 5)
clicks int จำนวนครั้งของผู้เล่นที่เปิดการ์ดในเกมตานี้ "clicks": 11 (ผู้เล่นเปิดการ์ดไปทั้งหมด 11 ครั้ง)

สรุปข้อมูลการเปิดการ์ด

{"pos": 1, "value": 5, "clicks": 3} = การ์ดตำแหน่งที่ 1 มีค่าเท่ากับ 5 และผู้เล่นหงายการ์ดไปทั้ง 3 ครั้งในตานี้

ทดสอบ API จากโปรแกรม Cypress

โดยที่จะรัน Test Script จะต้องทำตามขั้ตอนดังนี้

  1. เปิดเทอมินอล เปลี่ยน path ไปยังโฟลเดอร์ api_testing
cd api_testing
  1. ทำการลง node modules ที่ต้องใช้งานด้วยคำสั่ง
npm install
  1. หลังจากลงเสร็จให้ใช้คำสั่งเพื่อทำการเทส
npm run test

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published