Zombori Péter 96ab0f4eee Readme update
2025-10-08 20:20:05 +02:00
2025-10-07 08:18:11 +00:00
2025-10-08 20:20:05 +02:00

Express API - MariaDB-hez

A konténerizált NodeJS Express Api, ami a MariaDB adatbázist kiszolgálja.

Endpointok

[GET] /

Egyszerű health check végpont az API elérhetőségének ellenőrzésére. Nem igényel autentikációt.

példa:

Request Body:

{}

Response:

{
  "status": "ok"
}

[POST] /auth

Bejelentkezés: ellenőrzi, hogy a megadott felhasználónév és jelszó helyes-e, és visszaadja, hogy az illető admin-e.

példa:

Request Body:

{
  "authUname": "admin",
  "authPw": "secret"
}

Response (sikeres):

{
  "ok": true,
  "admin": true,
  "userId": 1
}

Response (hibás adatok):

{
  "ok": false,
  "admin": false
}

Felhasználók (/users)

Minden /users művelet admin jogosultságot igényel. Az admin azonosítása a body-ban küldött authUname és authPw mezőkkel történik.

[GET] /users

Összes felhasználó listázása (admin szükséges).

példa:

Request Body:

{
  "authUname": "admin",
  "authPw": "secret"
}

Response:

{
  "ok": true,
  "users": [
    { "id": 1, "uname": "admin", "admin": true,  "note": "asd" },
    { "id": 2, "uname": "user1", "admin": false, "note": null }
  ]
}

[POST] /users

Új felhasználó létrehozása (admin szükséges). A jelszó SHA-256-tal hash-elten kerül tárolásra.

példa:

Request Body:

{
  "authUname": "admin",
  "authPw": "secret",

  "uname": "ujuser",
  "pw": "valami",
  "admin": false,
  "note": "Megjegyzés"
}

Response:

{
  "ok": true,
  "id": 3
}

[PATCH] /users

Felhasználó módosítása (admin szükséges). Az id kötelező; a többi mező opcionális. A pw-t plaintext-ben kell küldeni, a szerver hash-eli.

példa:

Request Body:

{
  "authUname": "admin",
  "authPw": "secret",

  "id": 2,
  "uname": "user2",
  "pw": "ujjelszo",
  "admin": false,
  "note": "Frissített felhasználó"
}

Response:

{
  "ok": true
}

[DELETE] /users

Felhasználó törlése (admin szükséges) az id alapján.

példa:

Request Body:

{
  "authUname": "admin",
  "authPw": "secret",
  "id": 2
}

Response:

{
  "ok": true,
  "deleted": 1
}

Kontaktok (/contacts)

Minden /contacts művelet auth-ot igényel (bármely létező felhasználó). A body-ban authUname és authPw szükséges.

[GET] /contacts

Összes kontakt listázása (auth szükséges).

példa:

Request Body:

{
  "authUname": "user1",
  "authPw": "secret"
}

Response:

{
  "ok": true,
  "contacts": [
    { "id": 1, "name": "Teszt Elek", "phone": "+36 30 123 4567", "address": "Budapest", "note": "VIP" }
  ]
}

[POST] /contacts

Új kontakt létrehozása (auth szükséges).

példa:

Request Body:

{
  "authUname": "user1",
  "authPw": "secret",
  "name": "Teszt Elek",
  "phone": "+36 30 123 4567",
  "address": "Budapest",
  "note": "VIP"
}

Response:

{
  "ok": true,
  "id": 5
}

[PATCH] /contacts

Kontakt módosítása (auth szükséges). Az id kötelező; a name, phone/phome, address, note opcionálisak.

példa:

Request Body:

{
  "authUname": "user1",
  "authPw": "secret",
  "id": 5,
  "name": "Teszt Elek Jr.",
  "phone": "+36 70 111 2222",
  "note": "Frissítve"
}

Response:

{
  "ok": true
}

[DELETE] /contacts

Kontakt törlése (auth szükséges) az id alapján.

példa:

Request Body:

{
  "authUname": "user1",
  "authPw": "secret",
  "id": 5
}

Response:

{
  "ok": true,
  "deleted": 1
}

Futtatás:

A konténert a docker-compose.yml file írja le a Dockerfile alapján. Futtatása a következő:

Indítás

docker compose up -d

Bizonyos operációs rendszereken docker-compose up -d.

Illetve első indításnál docker compose up -d --build

Logokkal való indításhoz a docker compose logs használható, folyamatos debug logokért a következő indítóparancs használatos Windows-on:

docker compose up -d ; docker compose logs -f

Linux alatt docker compose up -d && docker compose logs -f Vagy docker-compose up -d && docker-compose logs -f

Leállítás

A konténer és hozzá tartozó network leállítása a következővel érhető el:

docker compose down

Bizonyos operációs rendszereken docker-compose down

Linux - sudo probléma

Néha Linux alatt - verziótól függően - gyakori probléma az, hogy minden docker és docker compose process root alatt fut. Ezért ilyenkör a következő parancsokkat érdemes használni:

# Indítás:
sudo docker compose up -d

# Logok:
sudo docker compose logs -f

# Indítás - logokkal:
sudo docker compose up -d && sudo docker compose logs -f

# Leállítás:
sudo docker compose down

Illetve a Docker Compose verziójától függően ugyan ez vonatkozik:

# Indítás:
sudo docker-compose up -d

# Logok:
sudo docker-compose logs -f

# Indítás - logokkal:
sudo docker-compose up -d && sudo docker-compose logs -f

# Leállítás:
sudo docker-compose down

Windows

A Docker Dekstopot telepítve egyből lejön a docker compose parancs, amit cmd-ből, vagy PowerShell-ből tudunk használni, ugyan úgy, mint Linux alatt.

Fontos!

Fontos, hogy a cmd-t és a PowerShellt is adminisztrátorként futtassuk!

Description
A Backend REST API-ja a web applikációnak, ami összeköti az adatbázist a frontenddel
Readme 111 KiB
Languages
JavaScript 96%
Dockerfile 4%