Differences

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

Link to this comparison view

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. ​
  
 </​note>​ </​note>​
Line 96: 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 101: 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!** și urmăriț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.+**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 110: 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 118: 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.
 +
  
isi/laboratoare/06.1731094918.txt.gz · Last modified: 2024/11/08 21:41 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