KING ICT Akademija prijemni zadatak
Middleware s 4 endpointa : za dohvaćanje svih proizvoda, proizvoda s specifičnim ID-om, proizvoda filtriranih po kategoriji i/ili cijeni, proizvoda filtriranih po imenu
Podaci se dohvaćaju s dummyjson.com
- Klonirajte repozitorij i pozicionirajte se unutar direktorija aplikacije
git clone https://github.com/evucelic/Spring-Boot-REST-API.git SpringBootREST
cd SpringBootREST- Otvorite projekt u IDE po izboru i stavite SDK projekta na JDK 17, potrebno je imati instaliran gradle
- Potrebno je imati instaliran Docker i pokrenuti Docker engine prije poziva u terminalu
Izgradite Docker image slijedećom komandom:
docker build -t springbootrest:latest .Nakon builda, Docker kontejner može se pokrenuti s:
docker run -p 8080:8080 springbootrest:latestNakon ovoga, aplikacija se vrti lokalno na portu 8080. Zaustavljanje kontejnera može se napraviti putem desktop aplikacije ili slijedećim komandama:
docker ps // nađi ID kontejnera
docker stop <ID_kontejnera>Troubleshooting
Ako Docker ne želi runnati ./gradlew clean build jer ste u windows power shell-u , to je zato što shell skripte imaju drukčije line endings od power shella. Obrišite klonirani repozitorij, pokrenite slijedeću komandu:
git config --global core.autocrlf input
Opet klonirajte repozitorij i pokrenite docker build
- Kako bi lokalno pokrenuli projekt koristeći gradle, treba izgraditi projekt naredbom:
./gradlew clean buildTime će se stvoriti .jar file u build/libs direktoriju. Aplikacija se pokreće s:
./gradlew bootRunServer se može ugasiti putem terminala kombinacijom CTRL + C
Svi endpointovi nalaze se unutar ProductController klase
- URL:
/products - Metoda:
GET - Opis: Dohvaća sve proizvode.
- Odgovor:
200 OKsa listom svih proizvoda.
- URL:
/products/{id} - Metoda:
GET - Opis: Dohvaća proizvod prema danom ID-u.
- Parametri:
id(Long) - ID proizvoda koji se dohvaća.
- Odgovor:
200 OKsa podacima o proizvodu ako je pronađen.404 Not Foundako proizvod nije pronađen.
getProductsByFilter(@RequestParam List<String> key, @RequestParam List<String> operation, @RequestParam List<String> value)
- URL:
/products/filter - Metoda:
GET - Opis: Filtrira proizvode prema zadanim kriterijima.
- Parametri:
key(List) - Lista ključeva po kojima se filtrira.operation(List) - Lista operacija za filtriranje (>,<,:).value(List) - Lista vrijednosti po kojima se uspoređuju ključevi.
- Odgovor:
200 OKsa listom filtriranih proizvoda.
- URL:
/products/search - Metoda:
GET - Opis: Pretražuje proizvode prema danom imenu.
- Parametri:
name(String) - Ime (ili dio imena) proizvoda za pretraživanje.
- Odgovor:
200 OKsa listom proizvoda koji zadovoljavaju kriterij pretraživanja.
Da biste pristupili endpointovima, morate se prijaviti koristeći korisničko ime i lozinku. Korisnički podaci za prijavu mogu se pronaći na dummyjson.com/users. Bilo koji korisnik je valjan za prijavu, na primjer:
- username: emilys
- password: emilyspass
GET localhost:8080/productsGET localhost:8080/products/5GET localhost:8080/products/filter?key=price&operation=>&value=500&key=price&operation=<&value=550
GET localhost:8080/products/filter?key=category&operation=:&value=fragrances
GET localhost:8080/products/filter?key=category&operation=:&value=fragrances&key=price&operation=>&value=50GET localhost:8080/products/search?name=red
GET localhost:8080/products/search?name=Red%20Lipstick