Repositório com os fundamentos da Web e da arquitetura cliente-servidor. Você aprenderá sobre os princípios da Internet, os componentes de um sistema web, as diferentes camadas da arquitetura cliente-servidor e como elas se comunicam. Além disso, você terá a oportunidade de praticar o desenvolvimento de uma aplicação web simples.
A Web, também conhecida como World Wide Web, é um sistema de comunicação baseado em hipertexto presente na internet. Ela permite o acesso a uma vasta quantidade de informações através de navegadores web, como o Google Chrome, Mozilla Firefox e Microsoft Edge.
A Web foi desenvolvida por Tim Berners-Lee durante a década de 1990 para compartilhar documentos científicos. Desde então, a Web evoluiu para se tornar uma plataforma de comunicação, colaboração, comércio eletrônico e entretenimento.
- URL (Uniform Resource Locator): Endereço usado para identificar recursos na Web.
- HTTP (Hypertext Transfer Protocol): Protocolo base da comunicação na Web, permitindo que clientes enviem solicitações e servidores respondam.
- HTML (Hypertext Markup Language): Linguagem de marcação usada para estruturar e exibir conteúdo na Web.
- CSS (Cascading Style Sheets): Linguagem de estilo usada para controlar a apresentação visual dos elementos HTML.
- JavaScript: Linguagem de programação usada para adicionar interatividade e dinamismo às páginas da Web.
A arquitetura cliente-servidor é uma forma de organizar sistemas de software onde as tarefas são distribuídas entre clientes (interface do usuário) e servidores (gerenciam recursos e serviços).
- Cliente: Interface instalada nos dispositivos dos usuários finais, como navegadores web, aplicativos móveis ou desktop.
- Servidor: Gerencia, armazena e fornece recursos e serviços solicitados pelos clientes.
- Protocolo HTTP: Usado para comunicação entre clientes e servidores web.
- Web Services e APIs: Permitem comunicação entre plataformas diferentes usando protocolos padrão como HTTP.
- Sockets de Rede: Permitem comunicação direta entre clientes e servidores para aplicações em tempo real.
- Escalabilidade
- Centralização de recursos
- Segurança
- Facilidade de manutenção
- Flexibilidade
Fonte: https://www.g2.com/articles/what-is-an-api#definition
- HTTP: Protocolo mais utilizado na Web para comunicação entre navegador e servidor.
- HTTPS: Versão segura do HTTP que adiciona criptografia aos dados transmitidos.
- GET: Solicita dados.
- POST: Envia dados.
- PUT: Atualiza dados.
- DELETE: Remove dados.
Interfaces de programação que permitem a comunicação entre diferentes componentes de software.
- Reutilização de código
- Integração
- Escalabilidade
Fonte: https://www.g2.com/articles/what-is-an-api#working
Estilo arquitetural para sistemas distribuídos, incluindo APIs, usando HTTP.
- Cliente-Servidor
- Stateless
- Cache
- Interface uniforme
- Sistema em camadas
Abordagem arquitetural que divide um sistema em serviços independentes e bem definidos.
- Escalabilidade
- Facilidade de manutenção
- Desenvolvimento ágil
- Resistência a falhas
- Gerenciamento de comunicação
- Monitoramento
- Consistência de dados
- Distribuição de carga
- Segurança
Vamos criar um assistente virtual acionado por voz utilizando a API REST da OpenAI. Iremos consumir dois endpoints via Postman para demonstrar como diferentes soluções podem explorar a arquitetura cliente-servidor na prática.
- Transcrição de Áudio:
POST https://api.openai.com/v1/audio/transcriptions
- Enviar um áudio gravado com a pergunta para o assistente.
- Chat com GPT:
POST https://api.openai.com/v1/chat/completions
- Enviar a pergunta transcrita para o endpoint do ChatGPT para obter uma resposta.
sequenceDiagram
participant Usuario
participant Cliente (Postman)
participant Servidor (API REST da OpenAI)
Usuario ->> Cliente (Postman): Envia áudio
Cliente (Postman) ->> Servidor (API REST da OpenAI): POST /v1/audio/transcriptions
Servidor (API REST da OpenAI) -->> Cliente (Postman): Resposta com transcrição
Cliente (Postman) ->> Servidor (API REST da OpenAI): POST /v1/chat/completions
Servidor (API REST da OpenAI) -->> Cliente (Postman): Resposta do ChatGPT
Cliente (Postman) ->> Usuario: Resposta do assistente virtual