Middle
Jak zmiany dokonane na kliencie trafiają na serwer i są zapisywane w bazie danych?
sobes.tech AI
Odpowiedź od AI
Zazwyczaj zmiany dokonane przez użytkownika w aplikacji internetowej (po stronie klienta) są wysyłane do serwera za pomocą żądania HTTP.
Typy żądań HTTP:
- POST: Używany do tworzenia nowego zasobu lub wysyłania danych do przetwarzania na serwerze. Często stosowany do danych z formularzy.
- PUT: Używany do aktualizacji istniejącego zasobu. Przesyłany jest pełny stan zasobu.
- PATCH: Używany do częściowej aktualizacji zasobu. Przesyłane są tylko zmienione pola.
- DELETE: Używany do usuwania zasobu.
Przykład przepływu danych:
- Użytkownik wprowadza dane w formularzu na stronie internetowej.
- JavaScript po stronie klienta zbiera te dane (np. w obiekcie JSON).
- Wysyłane jest żądanie HTTP (np. POST lub PUT) do określonego punktu końcowego API serwera. Dane są dołączane do ciała żądania.
// Przykład wysyłania danych do serwera za pomocą fetch API const data = { username: 'newuser', email: 'newuser@example.com' }; fetch('/api/users', { method: 'POST', // lub 'PUT', 'PATCH' headers: { 'Content-Type': 'application/json', // Inne nagłówki, np. do autoryzacji }, body: JSON.stringify(data), // Konwersja obiektu JavaScript na łańcuch JSON }) .then(response => response.json()) // Parsowanie odpowiedzi serwera do JSON .then(data => { console.log('Sukces:', data); // Obsługa udanej odpowiedzi }) .catch((error) => { console.error('Błąd:', error); // Obsługa błędu }); - Aplikacja serwerowa odbiera żądanie, kieruje je do odpowiedniego obsługi (kontrolera).
- Kontroler wyciąga dane z ciała żądania.
- Dane przechodzą walidację i sanitację po stronie serwera, aby zapewnić bezpieczeństwo i poprawność.
- Logika biznesowa przetwarza otrzymane dane (np. sprawdza unikalność nazwy użytkownika, wykonuje niezbędne obliczenia).
- Kontroler współpracuje z warstwą dostępu do danych (Data Access Layer - DAL) lub ORM (Object-Relational Mapper).
- DAL/ORM generuje zapytanie SQL lub używa metod bazy danych do zapisania, zaktualizowania lub usunięcia danych w odpowiednich tabelach.
-- Przykład SQL INSERT INSERT INTO users (username, email) VALUES ('newuser', 'newuser@example.com'); -- Przykład SQL UPDATE UPDATE users SET email = 'updated_email@example.com' WHERE username = 'newuser'; - Baza danych wykonuje operację i zwraca wynik (sukces lub błąd).
- DAL/ORM przekazuje wynik do kontrolera.
- Kontroler tworzy odpowiedź dla klienta (np. JSON z potwierdzeniem sukcesu, kodem statusu HTTP 200 OK, lub błędem z kodem statusu 400 Bad Request, 500 Internal Server Error itp.).
- Serwer wysyła odpowiedź do klienta.
- JavaScript po stronie klienta obsługuje odpowiedź (np. wyświetla komunikat o sukcesie, aktualizuje UI lub wyświetla błąd).
Technologie używane zależą od konkretnego stosu:
- Klient: HTML, CSS, JavaScript (React, Angular, Vue.js itp.)
- Serwer: Frameworki (Node.js/Express, Python/Django/Flask, Ruby/Rails, Java/Spring, PHP/Laravel itp.)
- Baza danych: SQL (PostgreSQL, MySQL, SQL Server), NoSQL (MongoDB, Cassandra)
Cały proces musi być bezpieczny (HTTPS, uwierzytelnianie, autoryzacja, walidacja) i obsługiwać możliwe błędy na każdym etapie.