Prévia do material em texto
Protocolo HTTP e APIs RestFull
Prof. Luiz Eduardo C. Leite
WEB
WEB, ou World Wide Web, é um sistema de documentos e recursos interconectados que
podem ser acessados pela internet. Esses documentos geralmente estão em formato HTML
(HyperText Markup Language) e podem incluir texto, imagens, vídeos e links para outros
documentos.
A WEB é composta por três principais tecnologias que formam sua base:
1. HTTP (Hypertext Transfer Protocol): O protocolo que permite a comunicação entre um cliente
(como um navegador) e um servidor para transferir informações na forma de páginas web.
1. HTML (Hypertext Markup Language): A linguagem de marcação usada para criar e estruturar
o conteúdo das páginas web.
2. URLs (Uniform Resource Locators): Os endereços únicos usados para localizar e acessar
recursos na web.
Embora muitas vezes seja confundida com a internet, a WEB é apenas um dos serviços que
operam sobre a internet, sendo projetada especificamente para navegação e acesso a
informações.
A Web foi criada em 1989 por Tim Berners-Lee e se tornou pública em 1991. Desde então,
evoluiu significativamente com tecnologias como JavaScript, CSS, e frameworks que permitem
interatividade e recursos avançados em aplicações web.
Protocolo HTTP
HTTP (Hypertext Transfer Protocol) é o protocolo de
comunicação usado para transferir informações na World Wide
Web. Ele define como as mensagens são formatadas e
transmitidas, e como servidores e navegadores devem agir em
resposta a essas mensagens.
Protocolos de Transporte:
• O HTTP opera sobre protocolos de transporte como o TCP
(Transmission Control Protocol).
• Por padrão, a porta TCP 80 é usada para HTTP e a 443 para
HTTPS (versão segura do HTTP).
Protocolo HTTP
Baseado em Requisições e Respostas:
• O cliente (geralmente um navegador) envia uma Requisição HTTP para o
servidor.
• O servidor processa a requisição e devolve uma Resposta HTTP, que pode incluir
o conteúdo solicitado (como uma página web) ou informações sobre o status do
processamento.
Exemplo de fluxo:
• Cliente requisita GET /index.html.
• Servidor responde com o conteúdo da página index.html
Protocolo Sem Estado (Stateless):
• Cada requisição é independente das anteriores. O servidor não armazena
informações sobre requisições passadas.
• Para manter informações entre requisições, são usados mecanismos como
cookies ou sessões.
Protocolo HTTP
Requisições e Respostas:
• As Requisições e Respostas HTTP são baseadas em texto legível por humanos. Isso foi
projetado para facilitar a depuração e a compreensão do protocolo.
• Cada Requisição HTTP tem um cabeçalho que inclui informações como o Método HTTP, a
URL solicitada e os cabeçalhos adicionais (por exemplo, tipo de conteúdo ou autenticação).
• A Resposta do servidor também inclui cabeçalhos (como o código de status) e um corpo
que contém os dados solicitados (como uma página HTML, por exemplo).
Métodos HTTP:
• Definem diferentes ações para manipulação de recursos:
• GET: Recuperar dados.
• POST: Enviar dados para o servidor.
• PUT: Atualizar dados existentes.
• DELETE: Remover dados.
• HEAD, PATCH, OPTIONS, TRACE, CONNECT: Outros métodos específicos.
Requisições HTTP
Uma requisição HTTP geralmente tem três partes principais:
• Linha de Requisição: Especifica o método HTTP, o recurso solicitado
(caminho) e a versão do protocolo. Exemplo:
GET /index.html HTTP/1.1
• Cabeçalhos da Requisição: Metadados que fornecem informações
adicionais sobre a requisição (Nome-Do-Cabeçalho: Valor). Exemplo:
Host: www.exemplo.com
User-Agent: Mozilla/5.0
Accept: text/html
• Corpo da Requisição (opcional): Usado em métodos como POST ou PUT
para enviar dados ao servidor. Exemplo (JSON enviado em uma
requisição POST):
{ "nome": "João", "idade": 30 }
Requisições HTTP - Exemplo
GET /index.html HTTP/1.1
Host: www.exemplo.com
User-Agent: Mozilla/5.0
Accept: text/html
Respostas HTTP
Uma resposta HTTP também tem três partes principais:
• Linha de Status: Indica a versão do protocolo, o código de status da
resposta e uma mensagem associada. Exemplo:
HTTP/1.1 200 OK
• Cabeçalhos da Resposta: Informações adicionais sobre os dados
retornados ou sobre o servidor (Nome-Do-Cabeçalho: Valor). Exemplo:
Content-Type: text/html
Content-Length: 348
Date: Tue, 11 Nov 2024 10:00:00 GMT
• Corpo da Resposta (opcional): Contém o conteúdo retornado pelo
servidor, como HTML, JSON, imagens, etc. Exemplo (conteúdo HTML)
Exemplo
Olá, mundo!
Respostas HTTP - Exemplo
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 125
Página Inicial
Bem-vindo ao nosso site!
Respostas HTTP
• 1xx (Informativo): A requisição foi recebida e está em
processamento.
• 2xx (Sucesso):
• 200 OK: Requisição bem-sucedida.
• 201 Created: Recurso criado com sucesso.
• 3xx (Redirecionamento):
• 301 Moved Permanently: Recurso movido permanentemente.
• 302 Found: Redirecionamento temporário.
• 4xx (Erro do Cliente):
• 400 Bad Request: Requisição inválida.
• 404 Not Found: Recurso não encontrado.
• 5xx (Erro do Servidor):
• 500 Internal Server Error: Erro interno no servidor.
• 503 Service Unavailable: Serviço indisponível.
HTML
HTML (HyperText Markup Language) é uma linguagem de marcação
usada para criar e estruturar o conteúdo de páginas na Web. Ele define a
organização e o formato de textos, imagens, vídeos, links e outros
elementos em uma página que é exibida no navegador.
• O HTML usa tags para identificar elementos na página.
• Uma tag é escrita entre sinais de menor e maior que ( )
Este é um parágrafo.
• As tags são aninhadas e organizadas hierarquicamente, criando uma
estrutura de árvore que organiza o conteúdo.
Título
Este é um parágrafo dentro de uma divisão.
• O HTML não é uma linguagem de programação, não possuindo lógica,
condições ou loops, sendo focado apenas na marcação e estruturação
do conteúdo.
• O HTML é desenvolvido e mantido pelo World Wide Web Consortium
(W3C) para garantir consistência entre navegadores.
HTML - Exemplo
Minha Página
Bem-vindo!
Este é o conteúdo principal da página.
HTML –Algumas TagsPrincipais
• Tags de Texto:
a : Títulos, com tamanhos decrescentes.
: Parágrafos.
: Pequenos trechos de texto.
e : Negrito e itálico, respectivamente.
• Tags de Mídia:
: Imagens.
e : Vídeos e áudios.
• Tags de Link e Navegação:
: Links.
: Seções de navegação.
• Tags de Estruturação:
: Divisões genéricas.
e : Estruturas semânticas para organização.
• Formulários:
: Formulários de entrada.
, , : Campos de entrada e botões.
JSON
JSON (JavaScript Object Notation) é um formato de texto leve usado
para armazenar e transportar dados. Ele é amplamente utilizado em
aplicações web para troca de informações entre clientes e servidores
devido à sua simplicidade e legibilidade por humanos.
• É uma estrutura textual, fácil de ler e escrever para humanos e
interpretar por máquinas.
• Pode ser transportado pelo protocolo HTTP.
• Apesar de ser derivado da sintaxe de objetos do JavaScript, o JSON é
independente de linguagem e pode ser usado em praticamente
qualquer tecnologia.
• Dados no JSON são representados em pares de chave-valor e/ou em
listas de valores.
• Comparado a outros formatos como XML, o JSON é mais compacto e
simples, o que reduz o tamanho dos dados transmitidos.
JSON - Estrutura
O JSON usa dois tipos principais de estrutura:
• Objetos (pares de chave-valor): Representam dados organizados em chaves e seus valores
associados.
{
"nome": "João",
"idade": 30,
"profissao": "Engenheiro"
}
• Arrays (listas de valores):Coleções ordenadas de dados.
["maçã", "banana", "laranja"]
• Objetos e Arrays podem ser combinados para criar estruturas complexas.
{
"usuario": {
"nome": "João",
"idade": 30
},
"habilidades": ["programação", "design", "gestão"],
"ativo": true
}
API REST
Uma API REST (Representational State Transfer) é uma interface que permite a
comunicação entre sistemas usando as convenções e princípios do estilo
arquitetural REST. É amplamente utilizada em aplicações web modernas para
permitir que diferentes sistemas troquem informações de forma eficiente e
escalável.
• Os sistemas são organizados em recursos identificados por URLs únicas.
Exemplo:
• Recurso "usuários": /usuarios
• Recurso específico: /usuarios/1 (usuário com ID 1)
• As ações sobre os recursos são realizadas utilizando Métodos HTTP
padronizados
• GET: Recuperar dados.
• POST: Criar um novo recurso.
• PUT: Atualizar um recurso existente.
• DELETE: Remover um recurso.
• Geralmente utiliza JSON para enviar e receber dados devido à sua simplicidade e
compatibilidade, mas também suporta XML, HTML, etc.
API REST
• Baseada em URLs Semânticas: As URLs devem ser claras e
indicativas do recurso que representam.
• Exemplo de URL bem projetada:
• http://127.0.0.1/produtos/123
• Exemplo de URL mal projetada:
• http://127.0.0.1/obterProdutoPorID?id=123
• As respostas utilizam Códigos de Status HTTP para indicar o
resultado da operação:
• 200 OK: Sucesso.
• 201 Created: Recurso criado.
• 404 Not Found: Recurso não encontrado.
• 500 Internal Server Error: Erro no servidor.
API REST - Exemplo
• Requisição para Obter Dados (GET):
• URL: https://api.exemplo.com/usuarios/1
• Método: GET
• Resposta:
{
"id": 1,
"nome": "João",
"email": "joao@email.com"
}
API REST - Exemplo
• Requisição para Criar um Novo Usuário (POST):
• URL: https://api.exemplo.com/usuarios
• Método: POST
• Corpo:
{
"nome": “Maria",
"email": “maria@email.com"
}
• Resposta:
{
"id": 2,
"nome": “Maria",
"email": “maria@email.com"
}
API REST - Exemplo
• Requisição para Atualizar um Usuário (PUT):
• URL: https://api.exemplo.com/usuarios/2
• Método: PUT
• Corpo:
{
"nome": “Maria Silva",
"email": “maria.silva@email.com"
}
• Resposta:
{
"id": 2,
"nome": “Maria Silva",
"email": “maria.silva@email.com"
}
API REST - Exemplo
• Requisição para Deletar um Usuário (DELETE):
• URL: https://api.exemplo.com/usuarios/2
• Método: DELETE
• Resposta:
{
“mensagem": “Usuário deletado com sucesso."
}
Implementação de APIs REST
• A implementação de uma API REST varia dependendo da
linguagem de programação escolhida, mas o conceito básico
é o mesmo: criar endpoints que respondem a requisições
HTTP e retornam dados em um formato como JSON.
• Na linguagem Python APIs REST podem ser implementadas
com o framework Flask, por exemplo.
• Já na plataforma ESP32, utilizando o framework Arduino, APIs
REST podem ser implementadas através de bibliotecas tais
como ESPAsyncWebServer ou WebServer.
• O ESP32 pode atuar como servidor web, processando requisições
HTTP e retornando respostas, geralmente no formato JSON.
Slide 1: Protocolo HTTP e APIs RestFull
Slide 2: WEB
Slide 3: Protocolo HTTP
Slide 4: Protocolo HTTP
Slide 5: Protocolo HTTP
Slide 6: Requisições HTTP
Slide 7: Requisições HTTP - Exemplo
Slide 8: Respostas HTTP
Slide 9: Respostas HTTP - Exemplo
Slide 10: Respostas HTTP
Slide 11: HTML
Slide 12: HTML - Exemplo
Slide 13: HTML – Algumas Tags Principais
Slide 14: JSON
Slide 15: JSON - Estrutura
Slide 16: API REST
Slide 17: API REST
Slide 18: API REST - Exemplo
Slide 19: API REST - Exemplo
Slide 20: API REST - Exemplo
Slide 21: API REST - Exemplo
Slide 22: Implementação de APIs REST