Your SlideShare is downloading. ×
0
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
HTTP: A Base do Desenvolvimento Web - FISL 12
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

HTTP: A Base do Desenvolvimento Web - FISL 12

1,557

Published on

Uma apresentação sobre o protocolo que fornece a base do desenvolvimento sobre a web, suas vantagens, características e más práticas que podem ser evitadas.

Uma apresentação sobre o protocolo que fornece a base do desenvolvimento sobre a web, suas vantagens, características e más práticas que podem ser evitadas.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,557
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
28
Comments
0
Likes
5
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. HTTP:A Base do Desenvolvimento WebAlexandre Gomes Gaigalas1 Fórum Internacional do Software Livre – 30 de Junho de 2011
  • 2. Alexandre Gomes Gaigalas ● PHP 5 ● OOP ● REST ● Linked Data2
  • 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.com3
  • 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 fazer4
  • 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 26165
  • 6. Protocolo Um conjunto de regras de comunicação.6
  • 7. HTTP: Cliente-Servidor clássico Cliente Requisição Resposta Servidor7
  • 8. POST e GET São dois métodos HTTP.8
  • 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ágina9
  • 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ágina10
  • 11. POST na Teoria● Método HTTP para enviar dados● $_POST são dados enviados● Formulários de inserção, atualização, processamento remoto, etc11
  • 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.12
  • 13. Outros métodos● DELETE para excluir dados● PUT para atualizar/inserir dados em um local específico● $_SERVER[REQUEST_METHOD]13
  • 14. Uma Requisição HTTP GET /index.html HTTP/1.1 Host: example.com rn rn14
  • 15. Uma Requisição HTTP Método Recurso Protocolo GET /index.html HTTP/1.1 Host: example.com rn Linha em rn Branco Cabeçalho15
  • 16. Uma Requisição HTTP● Método: $_SERVER[REQUEST_METHOD]● Recurso: $_SERVER[REQUEST_URI]● Protocolo: $_SERVER[SERVER_PROTOCOL]● Cabeçalhos: $_SERVER[HTTP_*] RFC 387516
  • 17. Acessando Cabeçalhos HTTP● Host: $_SERVER[HTTP_HOST]● User-Agent: $_SERVER[HTTP_USER_AGENT]● X-FooBar: $_SERVER[HTTP_X_FOOBAR] RFC 387517
  • 18. Uma Resposta HTTP HTTP/1.1 200 Ok Date: Mon, 22 November... Content-Length: 3 Content-type: text/html rn Oi!18
  • 19. Uma Resposta HTTP Protocolo Status Cabeçalhos HTTP/1.1 200 Ok Date: Mon, 22 November... Content-Length: 3 Content-type: text/html rn Nova Linha Oi!19 Corpo
  • 20. Content-Length● “Oi!” = 3● “Hello World” = 11● “” = 0● O PHP calcula automaticamente!20
  • 21. Content-Type● text/html● text/xml● application/json● text/plain● image/jpeg21
  • 22. Códigos de Status● 1xx – Informativo● 2xx – Sucesso!● 3xx – Redirecionamento● 4xx – Erro do cliente● 5xx – Erro do servidor22
  • 23. Códigos de Status famosos● 404 Not Found● 503 Service Unavailable● 403 Forbidden● 401 Unauthorized● 301 Redirect23
  • 24. Códigos de Status no PHP (envio)24
  • 25. Códigos de Status no AJAX (client)25
  • 26. Códigos de Status no jQuery (client)26
  • 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 exibir27
  • 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.28
  • 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.29
  • 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.30
  • 31. Negociação de Conteúdo31
  • 32. Negociação de Conteúdo32
  • 33. Cache33
  • 34. Cache34
  • 35. Anti-Patterns Práticas ruins que se tornaram populares.35
  • 36. Recursos e Métodos/usuarios/editar/alganet POST /usuarios/alganet/usuarios/excluir DELETE /usuarios/alganet/usuarios/inserir PUT /usuarios/usuarios/listar GET /usuarios/usuarios/buscar?nome=abc GET /usuarios?nome=abc36
  • 37. Query String?acao=editar /usuarios?grupo=adm?pagina=contato.php /posts?categoria=php?erro=1 /cidades?estado=RS?redir=http://... /veiculos?tipo=passeio?titulo=Me+Ajudem+SOS /cafe?tamanho=duplo37
  • 38. Separação vs Negociação de Conteúdohttp://exemplo.com http://exemplo.comhttp://api.exemplo.com http://exemplo.comhttp://mobile.exemplo.com http://exemplo.comhttps://seguro.exemplo.com https://exemplo.com38
  • 39. Cache● Expiração no passsado ● Expiração real● ?rand=8754 ● ETags39
  • 40. Dados do Cabeçalho no Corpo● {“erro”: “notfound”} ● Status: 404 Not Found● {“redir”:”http://...”} ● Status: 301 Redirect● {“ok”: true} ● Status: 201 Created40
  • 41. NÃO USEMANTI-PATTERNS POR FAVOR41
  • 42. Patterns
  • 43. POST-redirect-GET● POST /usuarios (Dados: username=alganet) ● 303 See Other /usuario/alganet● GET /usuarios/alganet ● 201 Created43
  • 44. DELETE● DELETE /usuarios/alganet ● 205 Reset Content APIs● POST /usuarios/alganet (Dados: removido=1) ● 200 OK Navegador44
  • 45. POST com dados inválidos● POST /usuarios (Dados: username=$%$%) ● 400 Bad Request45
  • 46. GET para URLs amigáveis● GET /usuarios?username=alganet ● 301 See Other /usuarios/alganet● GET /usuarios/alganet ● 200 Ok46
  • 47. Negociação de Conteúdo● GET /usuarios/alganet (Accept: text/xml) ● 303 See Other /usuarios/alganet.xml47
  • 48. Negociação de Conteúdo● GET /usuarios/alganet (Accept: text/xml) ● 200 Ok /usuarios/alganet (Content-Location: /usuarios/alganet.xml)48
  • 49. Cache● GET /usuarios/alganet ● 200 Ok (ETag: 2fe450ed30acb)● GET /usuarios/alganet (If-None-Match: 2fe450ed30acb) ● 304 Not Modified49
  • 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 fazer50
  • 51. Obrigado! NÃO USEM ANTI-PATTERNS POR FAVOR http://about.me/alganet http://slideshare.net/alganet51

×