O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

No mundo das ap is com Restful webservices

327 visualizações

Publicada em

Palestra no evento souwebpel em pelotas rs

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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

×