No description
Find a file
2026-05-19 01:44:23 +02:00
.gitignore serwer. 2026-05-19 01:44:23 +02:00
package-lock.json serwer. 2026-05-19 01:44:23 +02:00
package.json serwer. 2026-05-19 01:44:23 +02:00
README.md serwer. 2026-05-19 01:44:23 +02:00
server.js serwer. 2026-05-19 01:44:23 +02:00

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 score maleją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 i score). Następnie wykonuje bezpieczny, parametryzowany zapis do bazy danych (INSERT INTO), zapobiegając atakom typu SQL Injection.
  • Zwraca:
  • Kod 200 OK i potwierdzenie z wygenerowanym identyfikatorem rekordu w przypadku sukcesu.
  • Kod 400 Bad Request, jeśli przesłane dane są niekompletne.