No description
| .gitignore | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| server.js | ||
Toss the Wolf 🏆 Leaderboard API)
Lekki serwer backendowy (REST API) napisany w środowisku Node.js, służący do obsługi globalnej tablicy najlepszych wyników w grze Toss the Wolf. Skrypt przetwarza żądania klienta gry i trwale przechowuje rekordy.
💾 Architektura Bazy Danych
Serwer korzysta z wbudowanej, plikowej bazy danych SQLite. Podczas uruchomienia automatycznie inicjalizuje plik highscores.db (jeśli nie istnieje) w głównym katalogu serwera.
W bazie znajduje się jedna główna tabela scores, zawierająca struktury:
id(INTEGER) – Unikalny, automatycznie inkrementowany klucz główny (PRIMARY KEY).username(TEXT) – Nazwa gracza podana przy zapisie.score(REAL) – Dokładna wartość liczbowa uzyskanego wyniku (dystans).
🌐 Endpointy API
Serwer nasłuchuje domyślnie na porcie 3000. Do obsługi zapytań wykorzystuje bibliotekę Express.js i posiada wbudowaną obsługę CORS, co pozwala na bezpieczne odbieranie żądań bezpośrednio z silnika gry.
1. Pobieranie listy liderów
- Metoda:
GET - Ścieżka:
/scores - Działanie: Odpytuje bazę danych o najlepsze wyniki. Zapytanie SQL automatycznie sortuje tabelę po zmiennej
scoremalejąco i ucina listę do 10 najwyższych wpisów (LIMIT 10). - Zwraca: Tablicę obiektów JSON w formacie
[{ "username": "...", "score": ... }].
2. Zapisywanie nowego wyniku
- Metoda:
POST - Ścieżka:
/scores - Wymagane nagłówki:
Content-Type: application/json - Oczekiwany format danych (Body):
{
"username": "NazwaGracza",
"score": 1540.5
}
- Działanie: Waliduje wejściowe dane (sprawdza, czy obiekt zawiera zarówno
username, jak iscore). Następnie wykonuje bezpieczny, parametryzowany zapis do bazy danych (INSERT INTO), zapobiegając atakom typu SQL Injection. - Zwraca:
- Kod
200 OKi potwierdzenie z wygenerowanym identyfikatorem rekordu w przypadku sukcesu. - Kod
400 Bad Request, jeśli przesłane dane są niekompletne.