Skip to content

Metody i techniki programowania - Semestr letni 2023/2024

Notifications You must be signed in to change notification settings

wjkba/przepisy-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 

Repository files navigation

przepisy-backend

Metody i techniki programowania - Semestr letni 2023/2024

Python - 3.12 FastAPI - 0.110.2 uvicorn - 0.29.0 MongoDB -

Aplikacja została zbudowana przy użyciu FastAPI, nowoczesnego, szybkiego i wysoko wydajnego frameworka webowego do budowania interfejsów API z Pythonem 3.7. API łączy się z lokalnym serwerem MongoDB działającym na porcie 27017. Baza danych MongoDB została nazwana 'szpinak_db' i zawiera dwie kolekcje: 'recipes_collection', w której przechowywane są przepisy, oraz 'users_collection', gdzie przechowywane są dane użytkowników.

Dzięki temu backend aplikacji umożliwia komunikację między frontendem a serwerem, zapewniając pełną funkcjonalność zarządzania przepisami. Użytkownicy mogą wygodnie pobierać, dodawać, aktualizować, usuwać i zapisywać ulubione przepisy, korzystając z interakcji z aplikacją.

Funkcje

  • Uwierzytelnianie i autoryzacja użytkowników przy użyciu JWT
  • Bezpieczne hashowanie haseł
  • Obsługa przesyłania plików dla obrazów przepisów
  • Operacje CRUD dla przepisów
  • Operacje asynchroniczne dla lepszej wydajności

Wykorzystane biblioteki

  • FastAPI: Główny framework webowy używany do tworzenia API.
  • Uvicorn: Implementacja serwera ASGI używana do obsługi aplikacji FastAPI.
  • Passlib: Biblioteka do bezpiecznego hashowania haseł.
  • python-multipart: Wymagane do obsługi danych formularza (używane do przesyłania plików).
  • python-jose: Implementacja JavaScript Object Signing and Encryption (JOSE) w Pythonie, używana do tworzenia i weryfikacji JWT.
  • Pillow: Fork biblioteki Python Imaging Library (PIL) używanej do przetwarzania obrazów.
  • aiofiles: Biblioteka do asynchronicznej obsługi operacji plikowych.
  • JWT: Tokeny JSON Web dla bezpiecznego uwierzytelniania i wymiany informacji.

Konfiguracja

Wymagana jest wcześniejsza instalacja programów umożliwiających działanie bazy danych MongoDB


  1. Pobierz repozytorium
  2. W aplikacji MongoDB Compass stwórz nową baze danych o nazwie szpinak_db
  3. Stwórz dwie kolekcje recipes i users
  4. Zaimportuj dane z folderu mongodb_data
  5. Przy użyciu konsoli wejdź do ścieżki backend, zainstaluj pipenv i wymagane zależności
pip install pipenv
pipenv install
  1. Uruchom server przy użyciu uvicorn na porcie 8000
pipenv shell
uvicorn main:app --reload --port 8000

dokumentacja dostępna pod adresem http://127.0.0.1:8000/docs

Żądania HTTP

Użytkownicy, uwierzytelnianie

  • POST /api/sign_up - Tworzy nowe konto użytkownika.
  • GET /api/authcheck - Sprawdza, czy bieżący użytkownik jest uwierzytelniony.
  • GET /api/v - Waliduje token użytkownika.
  • GET /api/verify-token/{token} - Weryfikuje podany token.
  • POST /api/token - Loguje użytkownika i zwraca token uwierzytelniający.

Przepisy GET

  • GET /api/recipes - Pobiera listę wszystkich przepisów.
  • GET /api/recipe/{recipe_id} - Pobiera przepis na podstawie ID.
  • GET /api/recipes/newest - Pobiera najnowsze przepisy.
    • Parametry zapytania: n - liczba najnowszych przepisów do pobrania.
  • GET /api/recipes/trending - Pobiera najczęściej oglądane przepisy.
    • Parametry zapytania: n - liczba najczęściej oglądanych przepisów do pobrania.
  • GET /api/recipes/{username} - Pobiera przepisy utworzone przez konkretnego użytkownika.
  • GET /api/saved-recipes - Pobiera przepisy zapisane przez bieżącego użytkownika.

Przepisy CRUD (Create, Read, Update, Delete)

  • POST /api/recipe - Tworzy nowy przepis.
  • PUT /api/recipe/{id} - Aktualizuje istniejący przepis (obecnie niezaimplementowane).
  • DELETE /api/recipe/{id} - Usuwa przepis na podstawie ID.
  • POST /api/save_recipe/{recipe_id} - Zapisuje przepis w zapisanych przepisach bieżącego użytkownika.
  • POST /api/unsave_recipe/{recipe_id} - Usuwa przepis z zapisanych przepisów bieżącego użytkownika.
  • POST /api/upload/recipe-image - Przesyła obrazek do przepisu.

About

Metody i techniki programowania - Semestr letni 2023/2024

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages