Sobes.tech
Middle

Как промените, направени на клиента, достигат сървъра и се запазват в базата данни?

sobes.tech AI

Отговор от AI

Обикновено промените, направени от потребителя в уеб приложение (на клиента), се изпращат към сървъра чрез HTTP заявка.

Типове HTTP заявки:

  • POST: Използва се за създаване на нов ресурс или изпращане на данни за обработка от сървъра. Често се използва за данни от формуляри.
  • PUT: Използва се за актуализиране на съществуващ ресурс. Предава се пълното състояние на ресурса.
  • PATCH: Използва се за частична актуализация на ресурса. Предават се само променените полета.
  • DELETE: Използва се за изтриване на ресурс.

Пример за поток от данни:

  1. Потребителят въвежда данни във форма на уеб страница.
  2. JavaScript на клиента събира тези данни (например, в JSON обект).
  3. Изпраща се HTTP заявка (например, POST или PUT) към определен API endpoint на сървъра. Данните се прикачват към тялото на заявката.
    // Пример за изпращане на данни към сървъра с fetch API
    const data = { username: 'newuser', email: 'newuser@example.com' };
    
    fetch('/api/users', {
      method: 'POST', // или 'PUT', 'PATCH'
      headers: {
        'Content-Type': 'application/json',
        // Могат да има и други заглавки, например за автентикация
      },
      body: JSON.stringify(data), // Преобразуване на JavaScript обекта в JSON
    })
    .then(response => response.json()) // Парсиране на отговора от сървъра като JSON
    .then(data => {
      console.log('Успех:', data);
      // Обработка на успешен отговор
    })
    .catch((error) => {
      console.error('Грешка:', error);
      // Обработка на грешка
    });
    
  4. Сървърното приложение получава заявката и я маршрутизира към съответния обработчик (контролер).
  5. Контролерът извлича данните от тялото на заявката.
  6. Данните преминават през валидация и санитаризация на сървъра за осигуряване на сигурност и коректност.
  7. Бизнес логиката обработва получените данни (например, проверява уникалността на името на потребителя, извършва необходимите изчисления).
  8. Контролерът взаимодейства с нивото за достъп до данни (Data Access Layer - DAL) или ORM (Object-Relational Mapper).
  9. DAL/ORM генерира SQL заявка или използва методи на базата данни за съхранение, актуализиране или изтриване на данни в съответната таблица(и).
    -- Пример за SQL INSERT
    INSERT INTO users (username, email) VALUES ('newuser', 'newuser@example.com');
    
    -- Пример за SQL UPDATE
    UPDATE users SET email = 'updated_email@example.com' WHERE username = 'newuser';
    
  10. Базата данни изпълнява операцията и връща резултат (успех или грешка).
  11. DAL/ORM предава резултата на контролера.
  12. Контролерът форматира отговора за клиента (например, JSON с потвърждение за успех, HTTP статус код 200 OK, или грешка с статус код 400 Bad Request, 500 Internal Server Error и др.).
  13. Сървърът изпраща отговора към клиента.
  14. JavaScript на клиента обработва отговора (например, показва съобщение за успешно запазване, актуализира UI или показва грешка).

Използваните технологии зависят от конкретния стек:

  • Клиент: HTML, CSS, JavaScript (React, Angular, Vue.js и др.)
  • Сървър: Frameworks (Node.js/Express, Python/Django/Flask, Ruby/Rails, Java/Spring, PHP/Laravel и др.)
  • База данни: SQL (PostgreSQL, MySQL, SQL Server), NoSQL (MongoDB, Cassandra)

Целият процес трябва да бъде безопасен (HTTPS, автентикация, авторизация, валидиране) и да обработва възможните грешки на всеки етап.