Arhitectura client-server reprezintă un model de proiectare utilizat în dezvoltarea de aplicații distribuite. În acest model, două entități distincte comunică pentru a furniza funcționalitatea unei aplicații: clientul și serverul.
Clientul este entitatea care inițiază cererea către server. De obicei, acesta este un utilizator final sau un dispozitiv care solicită resurse, date sau servicii de la server. Exemple de clienți includ browsere web, aplicații mobile sau desktop-uri.
Serverul este entitatea care procesează cererea primită de la client și oferă un răspuns adecvat. Serverele stochează resursele și datele necesare și gestionează logica de afaceri a aplicației. Un server poate servi mai mulți clienți simultan.
Protocolul HTTP (Hypertext Transfer Protocol) este unul dintre cele mai utilizate protocoale de comunicare în arhitectura client-server, în special pentru aplicațiile web. HTTP definește cum trebuie să fie formatate cererile (requests) și răspunsurile (responses) între client și server.
O cerere HTTP tipică include:
Răspunsul HTTP include:
Mecanismul de bază în arhitectura client-server este Request-response cycle.
Acest proces permite interacțiunea continuă între client și server, fiecare cerere fiind procesată independent.
1. Pentru a începe, asigurați-vă că aveți instalat Python.
2. Verificați instalarea rulând comanda în terminal: python –version
.
3. Descarcati scheletul de cod de aici.
py -3
(3.x) sau python3
(pe Linux), respectiv versiunea de package manager: py -3 -m pip
sau pip3
(pe Linux)
Pentru a instala dependențe folosim package manager-ul pip
:
pip install flask flask-sqlalchemy
Pentru a instala dependențele specificate într-un fișier folosim flag-ul -r
:
py -3 -m pip install -r requirements.txt
py -3 app.py
Alternativă pentru Linux:
pip install -r requirements.txt
pip3 install -r requirements.txt
python app.py
python3 app.py
4. Deschideti proiectul folosind IDE-ul preferat, de exemplu Visual Studio Code cu extensia Python sau un IDE specializat pentru Python, precum PyCharm și rulați comanda pentru instalarea dependențelor din fișierul requirements.txt.
Vom folosi Flask-SQLAlchemy pentru a crea o bază de date SQLite (pentru simplitate), fără a fi necesară configurarea unui server SQL dedicat.
5. Dupa finalizarea primului TO DO pentru testare descarcati postman de aici.
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
@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})
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.
Testati fiecare endpoint in parte, verificati ca functioneaza corect. Mai jos este descris un test case pe care sa-l abordati, iar de la acesta puteti sa realiza propriile voastre test case-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.
Verificați funcționarea aplicației folosind următoarele metode:
2. Pentru a adauga calea verificati adnotarea fiecarui endpoint (@app.route(”/task/cale”)).
3. Verificati tipul metodei (POST/ GET/ etc.)
Instalați 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
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.