Sobes.tech
Middle

Jak se změny provedené na klientovi dostávají na server a ukládají do databáze?

sobes.tech AI

Odpověď od AI

Obecně platí, že změny provedené uživatelem v webové aplikaci (na klientské straně) jsou odeslány na server prostřednictvím HTTP požadavku.

Typy HTTP požadavků:

  • POST: Používá se k vytvoření nového zdroje nebo k odeslání dat ke zpracování serverem. Často se používá pro data z formulářů.
  • PUT: Používá se k aktualizaci existujícího zdroje. Přenáší se úplný stav zdroje.
  • PATCH: Používá se k částečné aktualizaci zdroje. Přenášejí se pouze změněná pole.
  • DELETE: Používá se k odstranění zdroje.

Příklad toku dat:

  1. Uživatel zadá data do formuláře na webové stránce.
  2. JavaScript na straně klienta shromažďuje tato data (například do JSON objektu).
  3. Provádí se HTTP požadavek (například POST nebo PUT) na určitý API endpoint serveru. Data jsou připojena k tělu požadavku.
    // Příklad odeslání dat na server pomocí fetch API
    const data = { username: 'newuser', email: 'newuser@example.com' };
    
    fetch('/api/users', {
      method: 'POST', // nebo 'PUT', 'PATCH'
      headers: {
        'Content-Type': 'application/json',
        // Další hlavičky, například pro autorizaci
      },
      body: JSON.stringify(data), // Převod JavaScriptového objektu na JSON
    })
    .then(response => response.json()) // Parsování odpovědi od serveru do JSON
    .then(data => {
      console.log('Úspěch:', data);
      // Zpracování úspěšné odpovědi
    })
    .catch((error) => {
      console.error('Chyba:', error);
      // Zpracování chyby
    });
    
  4. Serverová aplikace přijme požadavek a přepošle jej příslušnému zpracovateli (kontroléru).
  5. Kontrolér extrahuje data z těla požadavku.
  6. Data jsou validována a sanitizována na straně serveru pro zajištění bezpečnosti a správnosti.
  7. Obchodní logika zpracovává přijatá data (například kontroluje unikátnost uživatelského jména, provádí potřebné výpočty).
  8. Kontrolér komunikuje s vrstvou přístupu k datům (Data Access Layer - DAL) nebo ORM (Object-Relational Mapper).
  9. DAL/ORM generuje SQL dotaz nebo používá metody databáze k uložení, aktualizaci nebo odstranění dat v příslušné tabulce(y).
    -- Příklad SQL INSERT
    INSERT INTO users (username, email) VALUES ('newuser', 'newuser@example.com');
    
    -- Příklad SQL UPDATE
    UPDATE users SET email = 'updated_email@example.com' WHERE username = 'newuser';
    
  10. Databáze provede operaci a vrátí výsledek (úspěch nebo chybu).
  11. DAL/ORM předá výsledek kontroléru.
  12. Kontrolér sestaví odpověď pro klienta (například JSON s potvrzením úspěchu, HTTP status kód 200 OK, nebo chybovou zprávu s kódem 400 Bad Request, 500 Internal Server Error apod.).
  13. Server odešle odpověď klientovi.
  14. JavaScript na straně klienta zpracovává odpověď (například zobrazí zprávu o úspěšném uložení, aktualizuje UI nebo zobrazí chybu).

Použité technologie závisí na konkrétním stacku:

  • Klient: HTML, CSS, JavaScript (React, Angular, Vue.js atd.)
  • Server: Frameworky (Node.js/Express, Python/Django/Flask, Ruby/Rails, Java/Spring, PHP/Laravel atd.)
  • Databáze: SQL (PostgreSQL, MySQL, SQL Server), NoSQL (MongoDB, Cassandra)

Celý proces musí být bezpečný (HTTPS, autentifikace, autorizace, validace) a musí zpracovávat možné chyby na každém kroku.