01_Backend dokumentáció - Sa2x/FiukSzGHomework GitHub Wiki
A távoli szolgáltatás (backend) dokumentációja
A távoli szolgáltatás (API - application programming interface) segítségével lehetőségünk adódik igénybe venni a webshopunk szolgáltatásait a weben keresztüli kommunikáció, avagy HTTP protokoll segítségével.
A távoli szolgáltatás segítségével kerültek megvalósításra az olyan metódusok, amiket a felhasználói felületen a felhasználó végrehajthat, igénybe vehet. A szolgáltatás által biztosított végpontokon keresztül a kliens lekérdezhet különböző információkat a szerver oldaltól, esetleg új adatokat küldhet ezekre.
A szerver oldal biztosítja a kliens számára releváns funkcionalitásokat:
- Regisztráció
- Bejelentkezés
- CAFF fájl feltöltése
- Böngészés a feltöltött CAFF fájlok között
- Keresés funkció
- Megjegyzés írása a kiválasztott CAFF fájlhoz
- CAFF fájl letöltése
- Adminisztrátori jogosultsággal járó kiegészítő funkciók
- Képfájl törlése
- Felhasználói profil módosítása
- Felhasználói profil törlése
A backend felépítése
A backend szerkezetét az alábbi mappastruktúrára bontottuk szét, az egyes funkcionalitások alapján:
- A bejelentkezéshez, authentikációhoz kapcsolódó szolgáltatásokat az auth package-ben valósítottuk meg.
- Az authentikációhoz és különböző biztonsági beállítások megvalósításához szükséges fájlokat a config package-ben valósítottuk meg.
- Az távoli elérés megvalósításához és a megfelelő route mapping kivitelezéséhez a controller osztályokat a controllers package-ben valósítottuk meg.
- Az adatok megfelelő áramlásának biztosítása szempontjából létrehoztunk bizonyos DTO (Data Transfer Object) osztályokat, amik a DTOs package-ben kerültek megvalósításra.
- A webshopunk szempontjából releváns entitások számára meghatároztunk egyedi modeleket, amik segítségével könnyebben kezelhetővé válnak a weboldal minden aloldala és funckiója számára. Az egyes adattagok egységes modeljeit a models package-ben deklaráltuk.
- A perzisztens adattárolás és a data layerhez való könnyebb kapcsolódás szempontjából az adatréteghez közeli, ahhoz hozzáféréséhez szükséges osztályokat a repositories package-ben valósítottuk meg.
Végpontok
A kliens számára elérhető funkcionalitásokat különböző végpontokon tettük elérhetővé. Az alábbi táblázat ismerteti az egyes végpontok elérési útvonalát, valamint a megfelelő REST metódus típusát.
Rest Method | EndPoint | Comment |
---|---|---|
GET | /images | list of images |
GET | /images/{imageid} | image by id |
POST | /images/new | add new image |
PUT | /images/edit/{imageid} | update image details by id |
DELETE | /images/del/{imageid} | delete image by id |
GET | /images/{imageid}/comments | list of comments of image by id |
POST | /images/{imageid}/comments/new | add new comment |
DELET | /images/{imageid}/comments/del/{commentid} | delete comment by id |
GET | /profiles | list of profiles |
GET | /profiles/{profileid} | profile by id |
PUT | /profiles/edit/{profileid} | update profile by id |
DELETE | /profiles/del/{profileid} | delete profile by id |
POST | /login | login |
POST | /register | register |
POST | /logout | logout |
Models
A szerver oldalon a működéshez szükséges és ahhoz eltárolt adatok struktúrája a következő modelekben valósult meg:
Profile
- id : long -> BE
- email : string -> FE
- password : string -> FE
- admin : bool -> BE (hard code admin: email: [email protected] ; pw: password)
Image
- id : long -> BE
- name : string -> FE
- caff_file : string -> FE (BE preview képet eltárolja, csak egy link a db-ben a frontend ezt a linket hívja)
- uploaded_by : Profile -> FE
- created_by : string -> Parser
- created_at : date -> Parser
- comments : Array[Comment] -> FE
Comment
- id : long -> BE
- comment : string -> FE
- created_by : Profile -> FE
- created_at : date -> BE
A szerver tesztelése
Postman
Az API által távolról is elérhető végpontok helyes működéséről többek között manuálisan is megbizonyosodtunk. A szolgáltatás egyes végpontjait a Postman alkalmazáson keresztül meghívva képesek voltunk ellenőrizni a szerver helyes működését. A végpontok által fogadott és küldött JSON kérések segítségével ellenőrizhettük az szerver-kliens között végbemenő kommunikáció és annak formátumának helyességét.
Unit tesztek
Az alkalmazás szerver oldali tesztelését először Unit tesztekkel kezdtük, a teszteket a Controller osztályok helyes működésére alapoztuk. A tesztelési fájlok megtalálhatóak a backend tesztek mappájában.
Unit tesztelés
A backend unit teszteléséhez a UserController és a WebShopController osztályokhoz összesen 28 test-case készült. A tesztek a controller osztályok által megvalósított metódusok helyes működését tesztelték, a lehető legátláthatóbb tesztesetek segítségével. A tesztek első lefutása során néhány hibát jeleztek, ezek kijavítása egyszerű volt, keletkezésük kisebb működésbeli hibákból adódtak. A tesztek továbbá felfedték, hogy a JPA egymásba ágyazott objektumstrukturája nem hibátlan, de a program működését ez nem befolyásolja.