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.

unit_test_log