Middle
Como as alterações feitas no cliente são enviadas para o servidor e armazenadas na base de dados?
sobes.tech IA
Resposta da IA
Geralmente, as alterações feitas pelo utilizador numa aplicação web (no cliente) são enviadas para o servidor através de uma requisição HTTP.
Tipos de requisições HTTP:
- POST: Usado para criar um novo recurso ou enviar dados para processamento pelo servidor. Frequentemente utilizado para dados de formulários.
- PUT: Usado para atualizar um recurso existente. Transmite o estado completo do recurso.
- PATCH: Usado para atualizar parcialmente um recurso. Apenas os campos modificados são transmitidos.
- DELETE: Usado para eliminar um recurso.
Exemplo de fluxo de dados:
- O utilizador insere dados num formulário na página web.
- JavaScript no lado do cliente recolhe esses dados (por exemplo, num objeto JSON).
- É feita uma requisição HTTP (por exemplo, POST ou PUT) a um endpoint específico da API do servidor. Os dados são anexados ao corpo da requisição.
// Exemplo de envio de dados ao servidor usando fetch API const data = { username: 'newuser', email: 'newuser@example.com' }; fetch('/api/users', { method: 'POST', // ou 'PUT', 'PATCH' headers: { 'Content-Type': 'application/json', // Outros cabeçalhos, por exemplo, para autorização }, body: JSON.stringify(data), // Convertendo o objeto JavaScript para uma string JSON }) .then(response => response.json()) // Analisando a resposta do servidor em JSON .then(data => { console.log('Sucesso:', data); // Processamento da resposta bem-sucedida }) .catch((error) => { console.error('Erro:', error); // Processamento do erro }); - A aplicação do servidor recebe a requisição, encaminha-a para o manipulador correspondente (controlador).
- O controlador extrai os dados do corpo da requisição.
- Os dados passam por validação e saneamento no lado do servidor para garantir segurança e correção.
- A lógica de negócio processa os dados recebidos (por exemplo, verifica a unicidade do nome de utilizador, realiza cálculos necessários).
- O controlador interage com a camada de acesso a dados (Data Access Layer - DAL) ou ORM (Object-Relational Mapper).
- DAL/ORM gera uma consulta SQL ou usa métodos do banco de dados para guardar, atualizar ou eliminar dados na(s) tabela(s) correspondente(s).
-- Exemplo de SQL INSERT INSERT INTO users (username, email) VALUES ('newuser', 'newuser@example.com'); -- Exemplo de SQL UPDATE UPDATE users SET email = 'updated_email@example.com' WHERE username = 'newuser'; - O banco de dados executa a operação e devolve o resultado (sucesso ou erro).
- DAL/ORM transmite o resultado ao controlador.
- O controlador forma uma resposta para o cliente (por exemplo, JSON com confirmação de sucesso, código de estado HTTP 200 OK, ou erro com código de estado 400 Bad Request, 500 Internal Server Error, etc.).
- O servidor envia a resposta ao cliente.
- JavaScript no lado do cliente processa a resposta (por exemplo, exibe uma mensagem de sucesso, atualiza a interface ou mostra um erro).
As tecnologias utilizadas dependem do stack específico:
- Cliente: HTML, CSS, JavaScript (React, Angular, Vue.js, etc.)
- Servidor: Frameworks (Node.js/Express, Python/Django/Flask, Ruby/Rails, Java/Spring, PHP/Laravel, etc.)
- Base de dados: SQL (PostgreSQL, MySQL, SQL Server), NoSQL (MongoDB, Cassandra)
Todo o processo deve ser seguro (HTTPS, autenticação, autorização, validação) e tratar possíveis erros em cada etapa.