To API umożliwia zarządzanie koktajlami oraz ich składnikami. Każdy koktajl może zawierać wiele składników, z określonymi ilościami dla każdego. API wspiera pełne operacje CRUD dla koktajli oraz składników, w tym możliwość przesyłania obrazów dla składników.
http://localhost:3000/api
- Opis: Utwórz nowy koktajl.
- Treść żądania (JSON):
{ "name": "Mojito", "category": "Alkoholowy", "instructions": "Wymieszaj miętę, limonkę, cukier i rum...", "ingredients": [ { "ingredientId": "lemon", "quantity": "30ml" }, { "ingredientId": "mint", "quantity": "5 leaves" } ] } - Odpowiedź (201 Created):
{ "id": "1", "name": "Mojito", "category": "Alkoholowy", "instructions": "Wymieszaj miętę, limonkę, cukier i rum...", "ingredients": [ { "ingredientId": "lemon", "quantity": "30ml" }, { "ingredientId": "mint", "quantity": "5 leaves" } ] }
- Opis: Pobierz wszystkie koktajle.
- Odpowiedź (200 OK):
[ { "id": "1", "name": "Mojito", "category": "Alkoholowy", "instructions": "Wymieszaj miętę, limonkę, cukier i rum...", "ingredients": [ { "ingredientId": "lemon", "quantity": "30ml" }, { "ingredientId": "mint", "quantity": "5 leaves" } ] } ]
- Opis: Pobierz konkretny koktajl na podstawie ID.
- Odpowiedź (200 OK):
{ "id": "1", "name": "Mojito", "category": "Alkoholowy", "instructions": "Wymieszaj miętę, limonkę, cukier i rum...", "ingredients": [ { "ingredientId": "lemon", "quantity": "30ml" }, { "ingredientId": "Mint", "quantity": "5 leaves" } ] }
- Opis: Zaktualizuj określony koktajl.
- Treść żądania (JSON):
{ "name": "Zaktualizowane Mojito", "category": "Alkoholowy", "instructions": "Zaktualizowane instrukcje..." } - Odpowiedź (200 OK):
{ "id": "1", "name": "Zaktualizowane Mojito", "category": "Alkoholowy", "instructions": "Zaktualizowane instrukcje...", "ingredients": [ { "ingredient": "lemon", "quantity": "30ml" }, { "ingredient": "mint", "quantity": "5 leaves" } ] }
- Opis: Usuń koktajl na podstawie ID.
- Odpowiedź (204 No Content)
- Opis: Utwórz nowy składnik, w tym przesyłanie obrazu.
- Żądanie:
- Nagłówki:
Content-Type: multipart/form-data - Treść żądania (Form Data):
name(string): Nazwa składnika.description(string): Opis składnika.isAlcohol(boolean): Czy składnik zawiera alkohol.image(file): Plik obrazu składnika.
- Nagłówki:
- Odpowiedź (201 Created):
{ "id": "1", "name": "Limonka", "description": "Owoc cytrusowy", "isAlcohol": false, "image": "uploads/1698412345678-limonka.png" }
- Opis: Pobierz wszystkie składniki.
- Odpowiedź (200 OK):
[ { "id": "1", "name": "Limonka", "description": "Owoc cytrusowy", "isAlcohol": false, "image": "uploads/1698412345678-limonka.png" } ]
- Opis: Pobierz określony składnik na podstawie ID.
- Odpowiedź (200 OK):
{ "id": "1", "name": "Limonka", "description": "Owoc cytrusowy", "isAlcohol": false, "image": "uploads/1698412345678-limonka.png" }
- Opis: Zaktualizuj składnik, w tym możliwość zmiany obrazu.
- Żądanie:
- Nagłówki:
Content-Type: multipart/form-data - Treść żądania (Form Data):
name(opcjonalne): Nowa nazwa.description(opcjonalne): Zaktualizowany opis.isAlcohol(opcjonalne): Zaktualizowany status alkoholu.image(plik, opcjonalne): Nowy plik obrazu.
- Nagłówki:
- Odpowiedź (200 OK):
{ "id": "1", "name": "Zaktualizowana Limonka", "description": "Zaktualizowany opis", "isAlcohol": false, "image": "uploads/1698412345678-limonka-updated.png" }
- Opis: Usuń składnik na podstawie ID.
- Odpowiedź (204 No Content)
- 404 Not Found: Zwracany, gdy nie znaleziono składnika lub koktajla
{ "message": "Ingredient not found." }
- Dostęp do obrazów: Przesłane obrazy są zapisywane w katalogu
/uploads. Aby wyświetlić obraz, można użyć następującego formatu URL:http://localhost:3000/uploads/<nazwa_pliku_obrazu>