From 96ab0f4eee22bd45d3156fef6da06612b9d99938 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zombori=20P=C3=A9ter?= Date: Wed, 8 Oct 2025 20:20:05 +0200 Subject: [PATCH] Readme update --- README.md | 321 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 319 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index aaae691..dd131aa 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,320 @@ -# API +# Express API - MariaDB-hez -A Backend REST API-ja a web applikációnak, ami összeköti az adatbázist a frontenddel \ No newline at end of file +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: +> ```JSON +> {} +> ``` +> #### Response: +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "admin", +> "authPw": "secret" +> } +> ``` +> #### Response (sikeres): +> ```JSON +> { +> "ok": true, +> "admin": true, +> "userId": 1 +> } +> ``` +> #### Response (hibás adatok): +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "admin", +> "authPw": "secret" +> } +> ``` +> #### Response: +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "admin", +> "authPw": "secret", +> +> "uname": "ujuser", +> "pw": "valami", +> "admin": false, +> "note": "Megjegyzés" +> } +> ``` +> #### Response: +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "admin", +> "authPw": "secret", +> +> "id": 2, +> "uname": "user2", +> "pw": "ujjelszo", +> "admin": false, +> "note": "Frissített felhasználó" +> } +> ``` +> #### Response: +> ```JSON +> { +> "ok": true +> } +> ``` + +### [DELETE] `/users` + +Felhasználó törlése (admin szükséges) az `id` alapján. + +> **példa:** +> #### Request Body: +> ```JSON +> { +> "authUname": "admin", +> "authPw": "secret", +> "id": 2 +> } +> ``` +> #### Response: +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "user1", +> "authPw": "secret" +> } +> ``` +> #### Response: +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "user1", +> "authPw": "secret", +> "name": "Teszt Elek", +> "phone": "+36 30 123 4567", +> "address": "Budapest", +> "note": "VIP" +> } +> ``` +> #### Response: +> ```JSON +> { +> "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: +> ```JSON +> { +> "authUname": "user1", +> "authPw": "secret", +> "id": 5, +> "name": "Teszt Elek Jr.", +> "phone": "+36 70 111 2222", +> "note": "Frissítve" +> } +> ``` +> #### Response: +> ```JSON +> { +> "ok": true +> } +> ``` + +### [DELETE] `/contacts` + +Kontakt törlése (auth szükséges) az `id` alapján. + +> **példa:** +> #### Request Body: +> ```JSON +> { +> "authUname": "user1", +> "authPw": "secret", +> "id": 5 +> } +> ``` +> #### Response: +> ```JSON +> { +> "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 + +```bash +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: + +```bash +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: + +```bash +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: + +```bash +# 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: + +```bash +# 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!