No mundo das ap is com Restful webservices
-
Upload
waldemar-neto -
Category
Technology
-
view
328 -
download
2
Transcript of No mundo das ap is com Restful webservices
No mundo das APIs com RESTful
Opa!Sou o Waldemar Neto
Me encontrem na deepweb como @waldemarnt Também tem o blog tipo site http://walde.co/
2
Sobre essa pessoa
▣ Gaúcho de Pelotas▣ Desenvolvedor▣ 6 anos de mercado▣ Focado na área web, APIs▣ Contribuidor
3
Conrad Caine
Argentina
Pelotas
Alemanha
4
Ta mas e ai?O que é uma API?
5
‘’“Application Program Interface, é uma interface para interação com o software sem se envolver na implementação.”
6
7
Mas e o tal de RESTful aquele?
8
‘’“Representational State Transfer, é um padrão de API para Web que usa os beneficios do protocolo HTTP para facilitar a comunicação.”
9
A historia do homem e seu site
Que queria ter uma API.
10
O Personagem11
O site12
NecessidadeAPI para administrar e acessar o conteúdo do site pelo celular.
13
EMPRESA QUE FAZ APPS MOBILE
14
EMPRESA COM IMAGEM DESNECESSARIAMENTE GRANDE QUE FAZ SITES
15
E foi feito...
Acessando as noticias via API
● http://souwebpel.com.br/getNews○ Pega todas as noticias
● http://souwebpel.com.br/getNewsWithThumbnails○ Pega todas as noticias com thumbnails
● http://souwebpel.com.br/getNewsWithInformations○ Pega todas as noticias com informações sociais
● http://souwebpel.com.br/getNewsById○ Pega uma noticia pelo id
17
Inserindo as noticias
● http://souwebpel.com.br/addNews○ Adiciona uma nova noticia
● http://souwebpel.com.br/addNewsWithThumbnail○ Url para adicionar uma noticia com imagem
● http://souwebpel.com.br/EditNewsById?id=1○ Edita uma noticia pelo id
18
E assim foi para a área de agencias
● http://souwebpel.com.br/getAllCompanies○ Pega a lista de todas as empresas cadastradas
● http://souwebpel.com.br/addNewCompany○ Adiciona uma nova empresa
● http://souwebpel.com.br/EditCompanyById?id=1○ Edita uma empresa pelo id
19
E assim foi também para a área de vagas
● http://souwebpel.com.br/getAllJobs○ Pega a lista de todos os empregos
● http://souwebpel.com.br/addNewJob○ Adiciona um novo emprego
● http://souwebpel.com.br/addNewJobWithImage○ Adiciona um novo emprego com imagem
● http://souwebpel.com.br/editJobById?id=1○ Edita um emprego pelo id
20
Bora integrar com o mobile!
pensou então o jovem Leonardo.
21
Reação dos desenvolvedores mobile a o ver a API22
O Jovem Leonardo não
desiste e vai em busca de outra
empresa para fazer sua API
EMPRESA COM GENTE QUE SABE TUDO DE RESTful
24
A caminho do RESTful
(Fonte: M. Richardson, Rest In Practice)
25
Entendendo o dominio
Quem são os recursos?
27
E os dados?
28
Construindo a APIDefinindo rotas, metadata e tudo mais.
29
● SSL● Subdominio● versionamento
Definindo uma rota com boas práticas
https://api.souwebpel.com.br/v1/
30
● HTTP POST > CREATE● HTTP PUT > UPDATE● HTTP GET > READ● HTTP DELETE > DELETE● HTTP PATH > UPDATE (parcial)● HTTP HEAD > Informações da rota
Verbos HTTP
31
Chamada para o recursoGET https://api.souwebpel.com.br/v1/news
32
Análisando a resposta33
Análisando a resposta (Headers e status)34
● Informacional 1xx○ 102 Processing
● Sucesso 2xx○ 200 > OK○ 201 > Created
● Redirecionamento 3xx○ 301 > Moved
● Erros no lado do cliente 4xx○ 400 > Bad Request○ 401 > Unauthorized○ 404 > Not Found○ 405 > Method Not Allowed
● Erros no lado do servidor 5xx○ 500 > Internal Error
● https://github.com/waldemarnt/http-status-codes
HTTP Status codes (mais comuns)
35
Acessando um recurso por referencia
GET https://api.souwebpel.com.br/v1/news/1
36
Navegando por relações
GET https://api.souwebpel.com.br/v1/news/1/tags
37
Query parameters
● Filtros● Tokens● Relações
GET https://api.souwebpel.com.br/v1/news?publishedAt=2015
38
Criando um recurso
POST https://api.souwebpel.com.br/v1/news
39
Reposta do POST de criação
40
Atualizando um recurso
PUT https://api.souwebpel.com.br/v1/news/3
(resposta sera 200, sem header de location)
41
Atualizando um recurso(parcial)
PATH https://api.souwebpel.com.br/v1/news/3
(resposta sera 200, sem header de location)
42
Deletando um recurso
DELETE https://api.souwebpel.com.br/v1/news/3
43
Informaçes do recurso
HEAD https://api.souwebpel.com.br/v1/news
● Ultima modificação● Content-length● Content-type● Tipo de conexão● Tipos de requisição aceitas
44
ERROSComo tratamos?
45
Validações de formulário
46
Dados inválidos
47
Mas e os relacionamentos entre
recursos?
48
49
Ta mas e se o json ficar grande?
50
OPÇÃO 1: relações sob demanda
GET https://api.souwebpel.com.br/v1/news?extends=author,address
51
OPÇÃO 2: HATEOASMas que $#$@#$ é essa?
52
‘’“Hypermedia as the Engine of Application State, uso de hipermídias para navegar entre relações.”
53
HATEOAS
54
E a API foi finalizada
E foi integrada com sucesso!
56
Thanks!Perguntas?
https://github.com/waldemarnt
https://twitter.com/waldemarnt
https://fb.com/waldemarnt
http://walde.co/
57