Middle
Как промените, направени на клиента, достигат сървъра и се запазват в базата данни?
sobes.tech AI
Отговор от AI
Обикновено промените, направени от потребителя в уеб приложение (на клиента), се изпращат към сървъра чрез HTTP заявка.
Типове HTTP заявки:
- POST: Използва се за създаване на нов ресурс или изпращане на данни за обработка от сървъра. Често се използва за данни от формуляри.
- PUT: Използва се за актуализиране на съществуващ ресурс. Предава се пълното състояние на ресурса.
- PATCH: Използва се за частична актуализация на ресурса. Предават се само променените полета.
- DELETE: Използва се за изтриване на ресурс.
Пример за поток от данни:
- Потребителят въвежда данни във форма на уеб страница.
- JavaScript на клиента събира тези данни (например, в JSON обект).
- Изпраща се 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); // Обработка на грешка }); - Сървърното приложение получава заявката и я маршрутизира към съответния обработчик (контролер).
- Контролерът извлича данните от тялото на заявката.
- Данните преминават през валидация и санитаризация на сървъра за осигуряване на сигурност и коректност.
- Бизнес логиката обработва получените данни (например, проверява уникалността на името на потребителя, извършва необходимите изчисления).
- Контролерът взаимодейства с нивото за достъп до данни (Data Access Layer - DAL) или ORM (Object-Relational Mapper).
- 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'; - Базата данни изпълнява операцията и връща резултат (успех или грешка).
- DAL/ORM предава резултата на контролера.
- Контролерът форматира отговора за клиента (например, JSON с потвърждение за успех, HTTP статус код 200 OK, или грешка с статус код 400 Bad Request, 500 Internal Server Error и др.).
- Сървърът изпраща отговора към клиента.
- 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, автентикация, авторизация, валидиране) и да обработва възможните грешки на всеки етап.