Differences

This shows you the differences between two versions of the page.

Link to this comparison view

isi:laboratoare:06 [2025/11/09 23:15]
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 ===
  
 1. Pentru a începe, asigurați-vă că aveți instalat [[https://​www.python.org/​downloads/​|Python]]. 1. Pentru a începe, asigurați-vă că aveți instalat [[https://​www.python.org/​downloads/​|Python]].
 +
 +**Nu aveți Python?** > [[https://​www.python.org/​downloads/​|python.org/​downloads]] (bifați "Add to PATH" la instalare!)
  
 2. Verificați instalarea rulând comanda în terminal: ''​python --version''​. ​ 2. Verificați instalarea rulând comanda în terminal: ''​python --version''​. ​
  
 3. Descarcati scheletul de cod de [[https://​github.com/​ACS-ISI/​Backend_Server|aici]]. 3. Descarcati scheletul de cod de [[https://​github.com/​ACS-ISI/​Backend_Server|aici]].
 +
 +<code bash>
 +git clone https://​github.com/​ACS-ISI/​Backend_Server
 +cd Backend_Server
 +</​code>​
 +   
 +**Nu aveți git?** > Descărcați ZIP de pe GitHub > Extract
  
 <​note>​ <​note>​
Line 152: Line 163:
  
 </​note>​ </​note>​
 +
 +**Salvați fișierul după fiecare modificare. Serverul se restartează automat (debug mode).**
  
 4. Deschideti proiectul folosind IDE-ul preferat, de exemplu Visual Studio Code cu extensia Python sau un IDE specializat pentru Python, precum [[https://​www.jetbrains.com/​pycharm/​|PyCharm]] și rulați comanda pentru instalarea dependențelor din fișierul //​requirements.txt//​. 4. Deschideti proiectul folosind IDE-ul preferat, de exemplu Visual Studio Code cu extensia Python sau un IDE specializat pentru Python, precum [[https://​www.jetbrains.com/​pycharm/​|PyCharm]] și rulați comanda pentru instalarea dependențelor din fișierul //​requirements.txt//​.
Line 164: Line 177:
 5. Dupa finalizarea primului **TO DO** pentru testare descarcati postman de [[https://​www.postman.com/​downloads/​|aici]]. 5. Dupa finalizarea primului **TO DO** pentru testare descarcati postman de [[https://​www.postman.com/​downloads/​|aici]].
  
 +<note tip>
 +Tutorial testare cu Postman:
 +
 +1. **New Request**:
 +  * Method: `PUT`
 +  * URL: `http://​localhost:​5000/​tasks/​1` (înlocuiți `1` cu ID-ul unui task existent)
 +   
 +2. **Body > raw > JSON**:
 +
 +<code json>
 +{
 +  "​completed":​ true
 +}
 +</​code>​
 +
 +3. **Send**
 +
 +**Rezultat așteptat:​**
 +
 +<code json>
 +{
 +  "​id":​ 1,
 +  "​title":​ "​Finalizează laboratorul",​
 +  "​description":​ "Task 1 și Task 2",
 +  "​completed":​ true
 +}
 +</​code>​
 +
 +</​note>​
 + 
  
 <note tip> <note tip>
Line 187: 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 225: 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 277: 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)
  
  
isi/laboratoare/06.1762722949.txt.gz · Last modified: 2025/11/09 23:15 by alexandru.predescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0