เป็น Service API สำหรับเกมจับคู่ ซึ่งสร้างด้วย FastAPI
ให้ไปตั้งค่า SecretKey ของ API ด้วยการสร้าง Hex string ด้วยคำสั่ง
openssl rand -hex 32
จากนั้นในไปใส่ใน File .env
SECRET_KEY=Hex String ที่สร้างมา
- ลง docker และ docker-compose ในเครื่อง
- Clone repository นี้ไปยังเครื่อง Production
git clone https://github.com/Seaty/bluepiexam.git
- cd ไปยังโฟลเดอร์ bluepiexam
cd bluepiexam
- ใช้คำสั่ง docker-compose build ในเทอมินอล
docker-compose build
- ใช้คำสั่ง docker-compose up ในเทอมินอล
docker-compose up
- สามารถใช้ 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 สำหรับใช้กับปุ่มเริ่มเล่นเกมโดยการส่ง | - | จำเป็น |
ขั้นตอนการใช้งาน Websocket จะใช้หลังจากที่ได้ Token ของ User แล้ว เพื่อใช้ในการดำเนินการเล่นเกม โดยมีขั้นตอนดังนี้
- เริ่มต้นการใช้งานโดยเชื่อมต่อมาที่ ws://{HOSTNAME}:8000/api/playgame
- จากนั้นให้ส่ง Token ของ User ที่ได้จาก API /get_token มาเพื่อยืนยัน
- หลังจากนั้นก็สามารถส่งค่าการคลิกของการ์ดได้เลย
- เมื่อเกมจบจะมีการส่งค่า Global Best Score และ Best Score ส่งกลับมาผ่าน Websocket
รูปแบบ | คำอธิบาย | ตัวอย่าง |
---|---|---|
String ของ Token | ส่งเพื่อทำการยืนยันตัวตนในการเล่น | eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzd.... |
click:int |
ส่งค่านี้เพื่อระบุว่าผู้เล่นเปิดการ์ดตำแหน่งที่เท่าไหร่ | click:1 (เปิดการ์ดตำแหน่งที่ 1) |
รูปแบบ | คำอธิบาย | ตัวอย่าง |
---|---|---|
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 ครั้งในตานี้
โดยที่จะรัน Test Script จะต้องทำตามขั้ตอนดังนี้
- เปิดเทอมินอล เปลี่ยน path ไปยังโฟลเดอร์ api_testing
cd api_testing
- ทำการลง node modules ที่ต้องใช้งานด้วยคำสั่ง
npm install
- หลังจากลงเสร็จให้ใช้คำสั่งเพื่อทำการเทส
npm run test