HTTP: A Base do Desenvolvimento Web - FISL 12
-
Upload
alexandre-gaigalas -
Category
Technology
-
view
1.572 -
download
1
description
Transcript of HTTP: A Base do Desenvolvimento Web - FISL 12
![Page 1: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/1.jpg)
1
HTTP: A Base do Desenvolvimento WebAlexandre Gomes Gaigalas
Fórum Internacional do Software Livre – 30 de Junho de 2011
![Page 2: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/2.jpg)
2
Alexandre Gomes Gaigalas
● PHP 5
● OOP
● REST
● Linked Data
![Page 3: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/3.jpg)
3
Respect
● Um conjunto de componentes PHP
● Config – Configuração e Injeção de Dependências
● Relational – Mapeamento Objeto-Relacional
● Rest – Rotas e Controladores RESTful
● Validation – Validação e Asserção
● http://respect.github.com
![Page 4: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/4.jpg)
4
Nessa Apresentação(HTTP: A Base do Desenvolvimento Web)
Visão Geral – O Básico
Anti-Patterns – O que não fazer
Patterns – O que fazer
![Page 5: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/5.jpg)
5
Hyper Text Transfer Protocol
● Também é um padrão do W3C.
● Criado há mais de 10 anos.
● Não tem frescura com implementações. Todos os
navegadores respeitam.
● Define toda a arquitetura da web.
RFC 2616
![Page 6: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/6.jpg)
6
Protocolo
Um conjunto de regras de comunicação.
![Page 7: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/7.jpg)
7
HTTP: Cliente-Servidor clássico
Cliente
Servidor
Requisição Resposta
![Page 8: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/8.jpg)
8
POST e GET
São dois métodos HTTP.
![Page 9: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/9.jpg)
9
<form method=”POST”> na Prática
● Os parâmetros não aparecem na URL
● No PHP: $_POST
● É possível upload de arquivos
● Pede confirmação de re-envio quando atualiza a
página
![Page 10: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/10.jpg)
10
<form method=”GET”> na Prática
● Os parâmetros são enviados pela URL
● No PHP: $_GET
● Não é possível upload de arquivos
● Não pede confirmação de re-envio quando
atualiza a página
![Page 11: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/11.jpg)
11
POST na Teoria
● Método HTTP para enviar dados
● $_POST são dados enviados
● Formulários de inserção, atualização,
processamento remoto, etc
![Page 12: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/12.jpg)
12
GET na Teoria
● Método HTTP para obter dados
● $_GET são parâmetros de pesquisa
● Formulários de busca, filtros de relatórios, etc.
![Page 13: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/13.jpg)
13
Outros métodos
● DELETE para excluir dados
● PUT para atualizar/inserir dados em um local
específico
● $_SERVER['REQUEST_METHOD']
![Page 14: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/14.jpg)
14
Uma Requisição HTTP
GET /index.html HTTP/1.1Host: example.com\r\n\r\n
![Page 15: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/15.jpg)
15
Uma Requisição HTTP
GET /index.html HTTP/1.1Host: example.com\r\n\r\n
Método Recurso
Cabeçalho
Protocolo
Linha emBranco
![Page 16: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/16.jpg)
16
Uma Requisição HTTP
● Método: $_SERVER['REQUEST_METHOD']
● Recurso: $_SERVER['REQUEST_URI']
● Protocolo: $_SERVER['SERVER_PROTOCOL']
● Cabeçalhos: $_SERVER['HTTP_*']
RFC 3875
![Page 17: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/17.jpg)
17
Acessando Cabeçalhos HTTP
● Host: $_SERVER['HTTP_HOST']
● User-Agent: $_SERVER['HTTP_USER_AGENT']
● X-FooBar: $_SERVER['HTTP_X_FOOBAR']
RFC 3875
![Page 18: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/18.jpg)
18
Uma Resposta HTTP
HTTP/1.1 200 OkDate: Mon, 22 November...Content-Length: 3Content-type: text/html\r\nOi!
![Page 19: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/19.jpg)
19
Uma Resposta HTTP
HTTP/1.1 200 OkDate: Mon, 22 November...Content-Length: 3Content-type: text/html\r\nOi!
Protocolo Status
Nova Linha
Cabeçalhos
Corpo
![Page 20: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/20.jpg)
20
Content-Length
● “Oi!” = 3
● “Hello World” = 11
● “” = 0
● O PHP calcula automaticamente!
![Page 21: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/21.jpg)
21
Content-Type
● text/html
● text/xml
● application/json
● text/plain
● image/jpeg
![Page 22: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/22.jpg)
22
Códigos de Status
● 1xx – Informativo
● 2xx – Sucesso!
● 3xx – Redirecionamento
● 4xx – Erro do cliente
● 5xx – Erro do servidor
![Page 23: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/23.jpg)
23
Códigos de Status famosos
● 404 Not Found
● 503 Service Unavailable
● 403 Forbidden
● 401 Unauthorized
● 301 Redirect
![Page 24: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/24.jpg)
24
Códigos de Status no PHP (envio)
![Page 25: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/25.jpg)
25
Códigos de Status no AJAX (client)
![Page 26: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/26.jpg)
26
Códigos de Status no jQuery (client)
![Page 27: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/27.jpg)
27
Códigos de Sucesso● 201 Created – Sua requisição gerou algo no
servidor, aqui está ele.
● 202 Accepted – Sua requisição foi aceita e o
servidor está gerando algo.
● 204 No Content – Deu tudo certo, nada pra exibir
![Page 28: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/28.jpg)
28
Códigos de Redirecionamento
● 300 Multiple Choices – Achei várias coisas, escolha uma.
● 301 Redirect – Isso que você procura mudou pra sempre de lugar.
● 302 Found – Isso que você procura no momento está aqui.
● 303 See Other – Sua requisição foi aceita, olha ela aqui.
● 304 Not Modified – Nada novo no servidor, nem se preocupe.
● 307 Temporary Redirect – O que você procura está temporariamente aqui.
![Page 29: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/29.jpg)
29
Códigos de Erro do Cliente
● 400 Bad Request – Não consigo entender o que você pediu.
● 401 Unauthorized – Você não tem permissão pra isso.
● 403 Forbidden – Ninguém tem permissão pra isso.
● 404 Not Found – Não achei.
● 405 Method Not Allowed – Método não permitido.
![Page 30: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/30.jpg)
30
Códigos de Erro do Servidor
● 500 Internal Server Error – Alguma merda aconteceu.
● 501 Not Implemented – Esse servidor não entende esse método.
● 502 Bad Gateway – Eu contava com outro servidor que falhou.
● 503 Service Unavailable – Tô sobrecarregado, espera um pouco.
![Page 31: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/31.jpg)
31
Negociação de Conteúdo
![Page 32: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/32.jpg)
32
Negociação de Conteúdo
![Page 33: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/33.jpg)
33
Cache
![Page 34: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/34.jpg)
34
Cache
![Page 35: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/35.jpg)
35
Anti-Patterns
Práticas ruins que se tornaram populares.
![Page 36: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/36.jpg)
36
Recursos e Métodos
/usuarios/editar/alganet
/usuarios/excluir
/usuarios/inserir
/usuarios/listar
/usuarios/buscar?nome=abc
POST /usuarios/alganet
DELETE /usuarios/alganet
PUT /usuarios
GET /usuarios
GET /usuarios?nome=abc
![Page 37: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/37.jpg)
37
Query String
?acao=editar
?pagina=contato.php
?erro=1
?redir=http://...
?titulo=Me+Ajudem+SOS
/usuarios?grupo=adm
/posts?categoria=php
/cidades?estado=RS
/veiculos?tipo=passeio
/cafe?tamanho=duplo
![Page 38: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/38.jpg)
38
Separação vs Negociaçãode Conteúdo
http://exemplo.com
http://api.exemplo.com
http://mobile.exemplo.com
https://seguro.exemplo.com
http://exemplo.com
http://exemplo.com
http://exemplo.com
https://exemplo.com
![Page 39: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/39.jpg)
39
Cache
● Expiração no passsado
● ?rand=8754
● Expiração real
● ETags
![Page 40: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/40.jpg)
40
Dados do Cabeçalho no Corpo
● {“erro”: “notfound”}
● {“redir”:”http://...”}
● {“ok”: true}
● Status: 404 Not Found
● Status: 301 Redirect
● Status: 201 Created
![Page 41: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/41.jpg)
41
NÃO USEM ANTI-PATTERNS
POR FAVOR
![Page 42: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/42.jpg)
Patterns
![Page 43: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/43.jpg)
43
POST-redirect-GET
● POST /usuarios (Dados: username=alganet)
● 303 See Other /usuario/alganet
● GET /usuarios/alganet
● 201 Created
![Page 44: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/44.jpg)
44
DELETE
● DELETE /usuarios/alganet
● 205 Reset Content
● POST /usuarios/alganet (Dados: removido=1)
● 200 OK Navegador
APIs
![Page 45: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/45.jpg)
45
POST com dados inválidos
● POST /usuarios (Dados: username=$%$%)
● 400 Bad Request
![Page 46: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/46.jpg)
46
GET para URLs amigáveis
● GET /usuarios?username=alganet
● 301 See Other /usuarios/alganet
● GET /usuarios/alganet
● 200 Ok
![Page 47: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/47.jpg)
47
Negociação de Conteúdo
● GET /usuarios/alganet (Accept: text/xml)
● 303 See Other /usuarios/alganet.xml
![Page 48: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/48.jpg)
48
Negociação de Conteúdo
● GET /usuarios/alganet (Accept: text/xml)
● 200 Ok /usuarios/alganet
(Content-Location: /usuarios/alganet.xml)
![Page 49: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/49.jpg)
49
Cache
● GET /usuarios/alganet
● 200 Ok (ETag: 2fe450ed30acb)
● GET /usuarios/alganet (If-None-Match: 2fe450ed30acb)
● 304 Not Modified
![Page 50: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/50.jpg)
50
Nessa Apresentação(HTTP: A Base do Desenvolvimento Web)
Visão Geral – O Básico
Anti-Patterns – O que não fazer
Patterns – O que fazer
![Page 51: HTTP: A Base do Desenvolvimento Web - FISL 12](https://reader034.fdocumentos.tips/reader034/viewer/2022042715/5590e42a1a28ab09388b4701/html5/thumbnails/51.jpg)
51
NÃO USEM ANTI-PATTERNS
POR FAVOR
Obrigado!
http://about.me/alganet http://slideshare.net/alganet