O documento apresenta os conceitos básicos do protocolo HTTP, como requisições, respostas, métodos, cabeçalhos e códigos de status. Também discute boas e más práticas na construção de APIs RESTful de acordo com os padrões do HTTP, como usar corretamente métodos, URLs, cache e negociação de conteúdo.
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
3
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
4
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
5
6. Protocolo
Um conjunto de regras de comunicação.
6
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
9
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
10
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
11
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
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
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
27
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
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=abc
36
38. Separação vs Negociação
de Conteúdo
http://exemplo.com http://exemplo.com
http://api.exemplo.com http://exemplo.com
http://mobile.exemplo.com http://exemplo.com
https://seguro.exemplo.com https://exemplo.com
38
39. Cache
●
Expiração no passsado ●
Expiração real
●
?rand=8754 ●
ETags
39
40. Dados do Cabeçalho no Corpo
●
{“erro”: “notfound”} ●
Status: 404 Not Found
●
{“redir”:”http://...”} ●
Status: 301 Redirect
●
{“ok”: true} ●
Status: 201 Created
40