This shows you the differences between two versions of the page.
isi:laboratoare:06 [2024/11/08 21:41] alexandru.predescu [Obiective laborator] |
isi:laboratoare:06 [2024/11/11 11:43] (current) alexandru.predescu [Obiective laborator] |
||
---|---|---|---|
Line 84: | Line 84: | ||
</note> | </note> | ||
- | 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//. |
<note tip> | <note tip> | ||
[[https://flask-sqlalchemy.readthedocs.io/en/stable/|Flask-SQLAlchemy]] este o extensie a framework-ului Flask care facilitează lucrul cu baze de date relaționale în aplicațiile Python. | [[https://flask-sqlalchemy.readthedocs.io/en/stable/|Flask-SQLAlchemy]] este o extensie a framework-ului Flask care facilitează lucrul cu baze de date relaționale în aplicațiile Python. | ||
- | Vom folosi **Flask-SQLAlchemy** pentru a crea o bază de date **in-memory** (pentru simplitate), fără a fi necesară configurarea unui server SQL dedicat. | + | Vom folosi **Flask-SQLAlchemy** pentru a crea o bază de date SQLite (pentru simplitate), fără a fi necesară configurarea unui server SQL dedicat. |
- | + | ||
- | Urmăriți tutorialul [[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. | + | |
</note> | </note> | ||
Line 98: | Line 96: | ||
+ | <note tip> | ||
+ | |||
+ | De obicei, cererile de tip GET nu conțin date în body și se parametrizează astfel: | ||
+ | |||
+ | Exemplu cereri GET cu parametru în URL: | ||
+ | |||
+ | ''http://localhost:5000/login?username=alex&password=1234'' | ||
+ | |||
+ | <code python> | ||
+ | @app.route('/login', methods=['GET']) | ||
+ | def login(): | ||
+ | username = request.args.get('username') | ||
+ | print(username) | ||
+ | password = request.args.get('password') | ||
+ | print(password) | ||
+ | return jsonify({"status": True}) | ||
+ | </code> | ||
+ | |||
+ | </note> | ||
=== Task === | === Task === | ||
Line 103: | Line 120: | ||
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**. 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> | ||
- | **Cititi comentariile din schelet!** | + | **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. |
</note> | </note> | ||
Line 112: | Line 129: | ||
**Test Case:** am adaugat 3 task-uri folosind endpoint-ul de adaugat task-uri, iar cand apelez endpoint-ul prin care obtin o lista cu task-uri | **Test Case:** am adaugat 3 task-uri folosind endpoint-ul de adaugat task-uri, iar cand apelez endpoint-ul prin care obtin o lista cu task-uri | ||
acesta returneaza cele 3 task-uri adaugate anterior. | acesta returneaza cele 3 task-uri adaugate anterior. | ||
+ | |||
+ | **Verificați funcționarea aplicației folosind următoarele metode:** | ||
+ | |||
+ | == Testarea endpoint-urilor cu Postman == | ||
{{:isi:laboratoare:postmantutorial.png?700|}} | {{:isi:laboratoare:postmantutorial.png?700|}} | ||
Line 120: | Line 141: | ||
2. Pentru a adauga calea verificati adnotarea fiecarui endpoint (@app.route("/task/cale")). | 2. Pentru a adauga calea verificati adnotarea fiecarui endpoint (@app.route("/task/cale")). | ||
- | 3. Verificati tipul metodei (POST/ GET/ ETC.) | + | 3. Verificati tipul metodei (POST/ GET/ etc.) |
</note> | </note> | ||
+ | |||
+ | == Explorarea bazei de date cu SQLite Browser == | ||
+ | |||
+ | Instalați [[https://sqlitebrowser.org/|DB Browser for SQLite]] (versiunea portabilă). Acesta vă permite să accesați o bază de date SQLite folosind un editor vizual. Verificați conținutul bazei de date: deschideți din editor fișierul **tasks.db** din folder-ul **instance** | ||
+ | |||
+ | {{:isi:laboratoare:lab6:sqlite_browser.png?600|}} | ||
+ | |||
+ | == Testarea end-to-end cu aplicația web client == | ||
+ | |||
+ | Rulați aplicația client din folder-ul //frontend// prin deschiderea fișierului //index.html// cu un browser. Verificați funcționarea sistemului integrat client-server. Examinați codul aplicației, identificați modul în care se transmit cererile HTTP și cum se realizează interfața cu utilizatorul. | ||
+ | |||