This shows you the differences between two versions of the page.
|
isi:laboratoare:06 [2025/11/09 23:20] alexandru.predescu |
isi:laboratoare:06 [2025/11/15 10:58] (current) alexandru.predescu |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ===== Laboratorul 06. Arhitectura client-server ===== | + | ===== Laboratorul 06. Arhitectura client-server. Python Flask ===== |
| ==== Obiective laborator ==== | ==== Obiective laborator ==== | ||
| Line 119: | Line 119: | ||
| * **404 Not Found**: Resursa nu există | * **404 Not Found**: Resursa nu există | ||
| * **500 Internal Server Error**: Eroare pe server | * **500 Internal Server Error**: Eroare pe server | ||
| + | |||
| + | ==== Plan Laborator ==== | ||
| === Setup === | === Setup === | ||
| Line 228: | Line 230: | ||
| === Task === | === Task === | ||
| - | Completati **TO DO**-urile din scheletul de cod, acestea sunt **self explanatory**. Scopul acestora este sa intelegeti cum sa interactionati cu o baza de date prin intermediul unui **server**. Prin aceste metode numite **endpoint-uri** puteti realiza comunicarea dintre client si server. | + | Completati **TO DO**-urile din scheletul de cod, acestea sunt **self explanatory**. Pentru paginare, puneti doi parametri: page (numarul paginii) si limit (numar de inregistrari per pagina). Scopul acestora este sa intelegeti cum sa interactionati cu o baza de date prin intermediul unui **server**. Prin aceste metode numite **endpoint-uri** puteti realiza comunicarea dintre client si server. |
| <note tip> | <note tip> | ||
| **Urmăriți comentariile din schelet** și tutorialul Flask-SQLAlchemy [[https://flask-sqlalchemy.readthedocs.io/en/stable/quickstart/|Quick Start]] pentru a implementa operațiile cu baza de date necesare pentru implementarea funcționalităților de lucru cu datele. Alternativ, folosiți direct biblioteca [[https://docs.python.org/3/library/sqlite3.html|sqlite3]] (vezi exemple în scheletul de cod) pentru a interoga baza de date folosind sintaxă SQL. | **Urmăriți comentariile din schelet** și tutorialul Flask-SQLAlchemy [[https://flask-sqlalchemy.readthedocs.io/en/stable/quickstart/|Quick Start]] pentru a implementa operațiile cu baza de date necesare pentru implementarea funcționalităților de lucru cu datele. Alternativ, folosiți direct biblioteca [[https://docs.python.org/3/library/sqlite3.html|sqlite3]] (vezi exemple în scheletul de cod) pentru a interoga baza de date folosind sintaxă SQL. | ||
| Line 266: | Line 268: | ||
| + | == Probleme Comune == | ||
| - | === [Q&A] === | + | Eroare: "ModuleNotFoundError: No module named 'flask'" |
| + | **Soluție**: Nu ai instalat dependențele. Rulează: | ||
| + | |||
| + | <code bash> | ||
| + | pip install -r requirements.txt | ||
| + | </code> | ||
| + | |||
| + | Eroare: "Address already in use" | ||
| + | **Soluție**: Portul 5000 este deja folosit. Oprește procesul anterior sau schimbă portul: | ||
| + | |||
| + | <code python> | ||
| + | app.run(debug=True, port=5001) | ||
| + | </code> | ||
| + | |||
| + | Eroare: "404 Not Found" când testezi în Postman | ||
| + | |||
| + | **Verificări**: | ||
| + | |||
| + | * Serverul Flask rulează? (vezi în terminal) | ||
| + | * URL-ul este corect? (ex: `http://localhost:5000/tasks`) | ||
| + | * Metoda HTTP este corectă? (GET, POST, etc.) | ||
| + | |||
| + | Date nu apar în baza de date | ||
| + | |||
| + | **Verificări**: | ||
| + | |||
| + | * Ai apelat `db.session.commit()`? | ||
| + | * Nu sunt erori în consolă? | ||
| + | * Verifică cu DB Browser dacă fișierul `tasks.db` există în folder-ul `instance` | ||
| + | |||
| + | |||
| + | ==== [Q&A] ==== | ||
| == De ce trecem de la Firebase la Flask? == | == De ce trecem de la Firebase la Flask? == | ||
| Line 318: | Line 352: | ||
| * Planifici să scalezi aplicația | * Planifici să scalezi aplicația | ||
| * Vrei să înveți cum funcționează cu adevărat un backend | * Vrei să înveți cum funcționează cu adevărat un backend | ||
| + | |||
| + | |||
| + | ==== Resurse Utile ==== | ||
| + | |||
| + | == Documentație == | ||
| + | |||
| + | * [Flask Official Docs](https://flask.palletsprojects.com/) | ||
| + | * [Flask-SQLAlchemy Quickstart](https://flask-sqlalchemy.readthedocs.io/en/stable/quickstart/) | ||
| + | * [HTTP Status Codes](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) | ||
| + | * [REST API Best Practices](https://restfulapi.net/) | ||
| + | |||
| + | == Tutoriale Video == | ||
| + | |||
| + | * [Flask Tutorial for Beginners](https://www.youtube.com/watch?v=Z1RJmh_OqeA) | ||
| + | * [Building a REST API with Flask](https://www.youtube.com/watch?v=s_ht4AKnWZg) | ||
| + | |||
| + | == Cheat sheets == | ||
| + | |||
| + | * [Flask Cheat Sheet](https://s3.us-east-2.amazonaws.com/prettyprinted/flask_cheatsheet.pdf) | ||
| + | * [SQLAlchemy Cheat Sheet](https://www.pythonsheets.com/notes/python-sqlalchemy.html) | ||