http: a base do desenvolvimento web - fisl 12

51
1 HTTP: A Base do Desenvolvimento Web Alexandre Gomes Gaigalas Fórum Internacional do Software Livre – 30 de Junho de 2011

Upload: alexandre-gaigalas

Post on 29-Jun-2015

1.572 views

Category:

Technology


1 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: HTTP: A Base do Desenvolvimento Web - FISL 12

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

2

Alexandre Gomes Gaigalas

● PHP 5

● OOP

● REST

● Linked Data

Page 3: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

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

6

Protocolo

Um conjunto de regras de comunicação.

Page 7: HTTP: A Base do Desenvolvimento Web - FISL 12

7

HTTP: Cliente-Servidor clássico

Cliente

Servidor

Requisição Resposta

Page 8: HTTP: A Base do Desenvolvimento Web - FISL 12

8

POST e GET

São dois métodos HTTP.

Page 9: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

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

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

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

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

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

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

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

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

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

20

Content-Length

● “Oi!” = 3

● “Hello World” = 11

● “” = 0

● O PHP calcula automaticamente!

Page 21: HTTP: A Base do Desenvolvimento Web - FISL 12

21

Content-Type

● text/html

● text/xml

● application/json

● text/plain

● image/jpeg

Page 22: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

24

Códigos de Status no PHP (envio)

Page 25: HTTP: A Base do Desenvolvimento Web - FISL 12

25

Códigos de Status no AJAX (client)

Page 26: HTTP: A Base do Desenvolvimento Web - FISL 12

26

Códigos de Status no jQuery (client)

Page 27: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

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

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

31

Negociação de Conteúdo

Page 32: HTTP: A Base do Desenvolvimento Web - FISL 12

32

Negociação de Conteúdo

Page 33: HTTP: A Base do Desenvolvimento Web - FISL 12

33

Cache

Page 34: HTTP: A Base do Desenvolvimento Web - FISL 12

34

Cache

Page 35: HTTP: A Base do Desenvolvimento Web - FISL 12

35

Anti-Patterns

Práticas ruins que se tornaram populares.

Page 36: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

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

39

Cache

● Expiração no passsado

● ?rand=8754

● Expiração real

● ETags

Page 40: HTTP: A Base do Desenvolvimento Web - FISL 12

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

41

NÃO USEM ANTI-PATTERNS

POR FAVOR

Page 42: HTTP: A Base do Desenvolvimento Web - FISL 12

Patterns

Page 43: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

45

POST com dados inválidos

● POST /usuarios (Dados: username=$%$%)

● 400 Bad Request

Page 46: HTTP: A Base do Desenvolvimento Web - FISL 12

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

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

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

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

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

51

NÃO USEM ANTI-PATTERNS

POR FAVOR

Obrigado!

http://about.me/alganet http://slideshare.net/alganet