No mundo das ap is com Restful webservices

288 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
288
No SlideShare
0
A partir de incorporações
0
Número de incorporações
16
Ações
Compartilhamentos
0
Downloads
1
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

×