Skip to content

Latest commit

 

History

History
120 lines (80 loc) · 7.69 KB

README.md

File metadata and controls

120 lines (80 loc) · 7.69 KB

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