321 lines
5.8 KiB
Markdown
321 lines
5.8 KiB
Markdown
# 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:
|
|
> ```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!
|