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
...
A historia do homem e
seu site
Que queria ter uma API.
10
O Personagem
11
O site
12
Necessidade
API 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/getNew...
Inserindo as noticias
● http://souwebpel.com.br/addNews
○ Adiciona uma nova noticia
● http://souwebpel.com.
br/addNewsWith...
E assim foi para a área de agencias
● http://souwebpel.com.br/getAllCompanies
○ Pega a lista de todas as empresas cadastra...
E assim foi também para a área de vagas
● http://souwebpel.com.br/getAllJobs
○ Pega a lista de todos os empregos
● http://...
Bora integrar com o
mobile!
pensou então o jovem Leonardo.
21
Reação dos desenvolvedores mobile a o ver a API
22
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 API
Definindo 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 HE...
Chamada para o recurso
GET https://api.souwebpel.com.br/v1/news
32
Análisando a resposta
33
Análisando a resposta (Headers e status)
34
● Informacional 1xx
○ 102 Processing
● Sucesso 2xx
○ 200 > OK
○ 201 > Created
● Redirecionamento 3xx
○ 301 > Moved
● Erros...
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
● Tip...
ERROS
Como 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: HATEOAS
Mas 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/...
Próximos SlideShares
Carregando em…5
×

No mundo das ap is com Restful webservices

265 visualizações

Publicada em

Palestra no evento souwebpel em pelotas rs

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
265
No SlideShare
0
A partir de incorporações
0
Número de incorporações
16
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

No mundo das ap is com Restful webservices

  1. 1. No mundo das APIs com RESTful
  2. 2. Opa! Sou o Waldemar Neto Me encontrem na deepweb como @waldemarnt Também tem o blog tipo site http://walde.co/ 2
  3. 3. Sobre essa pessoa ▣ Gaúcho de Pelotas ▣ Desenvolvedor ▣ 6 anos de mercado ▣ Focado na área web, APIs ▣ Contribuidor 3
  4. 4. Conrad Caine Argentina Pelotas Alemanha 4
  5. 5. Ta mas e ai? O que é uma API? 5
  6. 6. ‘’ “Application Program Interface, é uma interface para interação com o software sem se envolver na implementação.” 6
  7. 7. 7
  8. 8. Mas e o tal de RESTful aquele? 8
  9. 9. ‘’ “Representational State Transfer, é um padrão de API para Web que usa os beneficios do protocolo HTTP para facilitar a comunicação.” 9
  10. 10. A historia do homem e seu site Que queria ter uma API. 10
  11. 11. O Personagem 11
  12. 12. O site 12
  13. 13. Necessidade API para administrar e acessar o conteúdo do site pelo celular. 13
  14. 14. EMPRESA QUE FAZ APPS MOBILE 14
  15. 15. EMPRESA COM IMAGEM DESNECESSARIAMENTE GRANDE QUE FAZ SITES 15
  16. 16. E foi feito...
  17. 17. 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
  18. 18. 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
  19. 19. 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
  20. 20. 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
  21. 21. Bora integrar com o mobile! pensou então o jovem Leonardo. 21
  22. 22. Reação dos desenvolvedores mobile a o ver a API 22
  23. 23. O Jovem Leonardo não desiste e vai em busca de outra empresa para fazer sua API
  24. 24. EMPRESA COM GENTE QUE SABE TUDO DE RESTful 24
  25. 25. A caminho do RESTful (Fonte: M. Richardson, Rest In Practice) 25
  26. 26. Entendendo o dominio
  27. 27. Quem são os recursos? 27
  28. 28. E os dados? 28
  29. 29. Construindo a API Definindo rotas, metadata e tudo mais. 29
  30. 30. ● SSL ● Subdominio ● versionamento Definindo uma rota com boas práticas https://api.souwebpel.com.br/v1/ 30
  31. 31. ● 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
  32. 32. Chamada para o recurso GET https://api.souwebpel.com.br/v1/news 32
  33. 33. Análisando a resposta 33
  34. 34. Análisando a resposta (Headers e status) 34
  35. 35. ● 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
  36. 36. Acessando um recurso por referencia GET https://api.souwebpel.com.br/v1/news/1 36
  37. 37. Navegando por relações GET https://api.souwebpel.com.br/v1/news/1/tags 37
  38. 38. Query parameters ● Filtros ● Tokens ● Relações GET https://api.souwebpel.com.br/v1/news?publishedAt=2015 38
  39. 39. Criando um recurso POST https://api.souwebpel.com.br/v1/news 39
  40. 40. Reposta do POST de criação 40
  41. 41. Atualizando um recurso PUT https://api.souwebpel.com.br/v1/news/3 (resposta sera 200, sem header de location) 41
  42. 42. Atualizando um recurso(parcial) PATH https://api.souwebpel.com.br/v1/news/3 (resposta sera 200, sem header de location) 42
  43. 43. Deletando um recurso DELETE https://api.souwebpel.com.br/v1/news/3 43
  44. 44. 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
  45. 45. ERROS Como tratamos? 45
  46. 46. Validações de formulário 46
  47. 47. Dados inválidos 47
  48. 48. Mas e os relacionamentos entre recursos? 48
  49. 49. 49
  50. 50. Ta mas e se o json ficar grande? 50
  51. 51. OPÇÃO 1: relações sob demanda GET https://api.souwebpel.com.br/v1/news? extends=author,address 51
  52. 52. OPÇÃO 2: HATEOAS Mas que $#$@#$ é essa? 52
  53. 53. ‘’ “Hypermedia as the Engine of Application State, uso de hipermídias para navegar entre relações.” 53
  54. 54. HATEOAS 54
  55. 55. E a API foi finalizada
  56. 56. E foi integrada com sucesso! 56
  57. 57. Thanks! Perguntas? https://github.com/waldemarnt https://twitter.com/waldemarnt https://fb.com/waldemarnt http://walde.co/ 57

×