Campus Party 2015: Os 10 Atributos de uma API de Sucesso

414 visualizações

Publicada em

Impulsionadas pelas estratégias digitais em mobilidade, cloud, mídias sociais e internet das coisas, as APIs estão realmente entrando no dia-a-dia das equipes de desenvolvimento, seja de startups, começando a desenvolver seus produtos, seja de grandes empresas, que carregam um grande legado de sistemas e investimentos já realizados em middlewares de integração.

Diversas razões que podem levar uma empresa a expor APIs. Mas seja qual for a sua, alguns cuidados são imprescindíveis para que as suas APIs tragam os resultados esperados. Entretanto, muitas implementações de APIs RESTful não tem levado em consideração princípios básicos de design.

O objetivo dessa sessão é apresentar 10 atributos das APIs de sucesso.

Nessa apresentação serão abordados tópicos como:

- Proposição de valor da API e entendimento do público-alvo
- Design de RESTful Resources (URIs, verbos, filtros e paginação)
- Modelos de segurança e o padrão OAuth 2.0
- Versionamento de APIs
- Caching de requisições
- Formas de documentação
- Hypermedia & Callbacks
- Padronização de erros & status code
- Controles e medidas recomendadas
- Onboarding, divulgação e engajamento

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

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

Nenhuma nota no slide

Campus Party 2015: Os 10 Atributos de uma API de Sucesso

  1. 1. Kleber  Bacili   kleber.bacili@sensedia.com   @kleberbacili   10  atributos  de  uma   API  de  sucesso  
  2. 2. www.slideshare.net/kleberbacili/  
  3. 3. Kleber  Bacili   kleber.bacili@sensedia.com   @kleberbacili   Cerquilho  
  4. 4. v  Design,  Exposição,  Gerenciamento     e  Engajamento  em  APIs   v  Headquarter  em  Campinas,     escritórios  em  Sampa,  Rio  e  Philly   v  Classificados  como  Visionários  no   Quadrante  Mágico  do  Gartner   (*)    Magic  Quadrant  for  Integrated  SOA  Governance  Technology  Sets,  2009  
  5. 5. Agenda   Contextualização   Planejamento  e  Preparação   Design  e  Construção   Execução  e  Engajamento  
  6. 6. Contextualização  
  7. 7. O  Tempo  todo     com  o  usuário   ComparKlhando     tudo  com  todos   Inundação  de  dados     e  contexto   Implantanto  e  rodando     em  algum  lugar   Source:  Gartner  (Jun/2012)   The  Nexus     of  Forces  
  8. 8. The  Internet   of  Things  
  9. 9. 10Atributos  de  uma   API  de  sucesso  
  10. 10. API   Strategy   Plan  &   Prepare   Design   &  Build   Run  &   Engage  
  11. 11. API   Strategy   Plan  &   Prepare   Design   &  Build   Run  &   Engage   Plan  &   Prepare  
  12. 12. As  primeiras  decisões  de  design…  
  13. 13. Selecione  a  Tecnologia  Adequada   RESTSOAP vs.
  14. 14. Selecione  a  Tecnologia  Adequada   JSONXML vs.
  15. 15. and the winners are… REST + JSON
  16. 16. 1Proposta  de  Valor  
  17. 17. “Você  pode  até  passar  batom  num  porco,   mas  ele  conSnuará  sendo  um  porco!”  
  18. 18. API   Strategy   Plan  &   Prepare   Design   &  Build   Run  &   Engage   Design   &     Build   Muitos   projetos;   Equipe   pequena   Design  &   Build  
  19. 19. 2Design  RESTful  
  20. 20. REST   RepresentaKonal  State  Transfer   EsKlo  arquitetural  criado  por  Roy  Fielding   RESTful     Design  que  respeita  os  conceitos  REST  
  21. 21. Coleção   /pedidos! Resources   Elemento   /pedidos/{id}!
  22. 22. /getAccount! /getAllAccounts! /createDirectory! /updateGroupName! /findClientById! RPC?  
  23. 23. GET  POST    PUT  DELETE  
  24. 24. Método  de  Consulta   GET /vendas/pedidos! GET /checklist/item/4! GET! POST! PUT! DELETE! PATCH!
  25. 25. Método  para  “Criação”   POST /clientes/98W3G32K01/enderecos! {! "endereco": "Av. Brigadeiro Faria Lima",! "numero": "3800",! "complemento": "18o. Andar",! "bairro": "Itaim Bibi",! "cidade": "São Paulo",! "estado": "SP",! "cep": "04538-132"! }   GET! POST! PUT! DELETE! PATCH!
  26. 26. GET! POST! PUT! DELETE! PATCH! Método  para  “Atualização”   PUT /clientes/98W3G32K01/enderecos/1! {! "endereco": "Av. Brigadeiro Faria Lima",! "numero": "3820",! "complemento": "19o. Andar",! "bairro": "Itaim Bibi",! "cidade": "São Paulo",! "estado": "SP",! "cep": "04538-132"! }  
  27. 27. GET! POST! PUT! DELETE! PATCH! Método  para  “Remoção”   DELETE /pedidos/{id}! DELETE /users/98W3G32K01/photos!
  28. 28. GET! POST! PUT! DELETE! PATCH! Método  para  “Atualização  parcial”   PATCH /users/98W3G32K01 ! {! "email": "joao.silva@empresa.com"! }   PATCH /pedidos/39009186! {! "status": "Cancelado"! }  
  29. 29. 3Versionamento  
  30. 30. v1   v2   v3   v4   v5   v6   v7   THINGS   CHANGE!  
  31. 31. Versionamento   Versão   URI:   https://api.mycompany.com/name-of-api/v2/resource! HTTP  ou     HTTPS   Seu  domínio   Nome  da  API   (opcional)   Recursos  e   Parâmetros   Outras  alternaKvas:   •  Twilio:  /2010-­‐04-­‐01/Accounts/     •  Salesforce.com:  /services/data/v20.0/sobjects/Account    
  32. 32. 4Error  Handling  
  33. 33. 200! 400! 500! Resultado  OK   Erro  no  Client   Erro  no  Server  
  34. 34. STATUS   OK 200!
  35. 35. 200! ! ! 400! ! ! 500! Status  &     Error  Codes   200  OK   GET /candidatos?estado=SP&partido=PP! 200 OK! [! {! "id": "1532962",! "apelido": "PAULO MALUF",! "nome": "PAULO SALIM MALUF",! "numero": "1111",! "cargo": "Deputado Federal",! "estado": "SP",! "partido": "PP",! "reeleicao": true! }! ]!
  36. 36. 200! ! ! 400! ! ! 500! Status  &     Error  Codes   201  Created   POST /items/1234/bids ! {! "amount" : 602.99 ! }   201 Created! Location: /items/1234/bids/100001 ! {! "amount" : 602.99,! "current_bid" : 510,! "winning" : true! } !
  37. 37. 200! ! ! 400! ! ! 500! Status  &     Error  Codes   400  Bad  Request   GET /candidatos! 400 Bad Request! {! "status" : 400,! "code" : 40377,! "message" : "Parâmetro 'estado' não ! pode ser nulo ou vazio"! "more" : https://dev.empresa.com/errors/40377! }!
  38. 38. 200! ! ! 400! ! ! 500! Status  &     Error  Codes   Outros  Comuns   401! ! 403!   404! ! 413! ! 429! Unauthorized   Forbidden   Not  Found   Request  is  too  Large   Too  Many  Requests  
  39. 39. 200! ! ! 400! ! ! 500! Status  &     Error  Codes   500  Internal  Server  Error   PUT /vendas/v1/pedidos/9940382! {! ”status" : canceled ! }   500 Internal Server Error! {! "status" : 500,! "message": ”Oops. Algo saiu errado”! } ! hMp://en.wikipedia.org/wiki/List_of_HTTP_status_codes  
  40. 40. Mais  informações?   Vídeo  do  Webinar   hdp://downloads.sensedia.com/webinar-­‐design-­‐de-­‐apis-­‐resful  
  41. 41. 5Segurança  
  42. 42. v Acesso  não  autorizado   v Ataques   v Sobrecarga   v Confidencialidade   v Implementações     desastradas  de  clients  
  43. 43. v Acesso  não  autorizado   v Ataques   v Sobrecarga   v Confidencialidade   v Implementações     desastradas  de  clients  
  44. 44. þ  Identificar App (?) þ  Identificar Usuário (?) þ  Identificar Device (?) Identidade e Autorização
  45. 45. HTTPS,  sempre!  
  46. 46. 6Hypermedia  
  47. 47. Hypermedia  APIs   *POX  =  Plain  Old  XML,  Richardson  Maturity  Model   HATEOAS  =  Hypermedia  as  the   Engine  of  ApplicaKon  State  
  48. 48. GET /items?q=macbook+air+new   {! "results" : [ ! {! "id" : 123,! "name" : "Macbook Air 2010 LIKE NEW", ! "price" : "499" ! }! ]! }   SEM   Hypermedia  
  49. 49. COM   Hypermedia   GET /items?q=macbook+air+new   {! "results" : [ ! {   "_links" : [! {"rel": "self","uri": "/items/123" },! {"rel": "bids","uri": "/items/123/bids" },! {"rel": "win","uri": "/items/123/bids?q=win" } ! ],! "name" : "Macbook Air 2010 LIKE NEW",! "price" : "499"   }! ]! }  
  50. 50. API   Strategy   Plan  &   Prepare   Design   &  Build   Run  &   Engage   Run  &   Engage   Muitos   projetos;   Equipe   pequena   Run  &   Engage  
  51. 51. 7Developers  Portal  
  52. 52. Docs  incompletos,  desatualizados,     estáScos  e  com  PDFs  de  100  páginas  
  53. 53. Gekng     Started   www.twilio.com/docs!
  54. 54. Documentação     InteraSva   desenvolvedores.extra.com.br!
  55. 55. Exemplos  de     código  na     linguagem     do  developer   sendgrid.com/docs!
  56. 56. 8Self-­‐Service  
  57. 57. Sign-­‐up  e  Tokens  de   acesso  automáScos   stripe.com/docs!
  58. 58. REST  Console  ou     Sandbox  /  Playgroung   dev.transparencia.org.br!
  59. 59. 9Confiabilidade  
  60. 60. Confiabilidade  Bugs   Problemas  de   Performance   Indisponibilidade   Mudanças     (não-­‐planejadas)   Falta  de   Suporte  
  61. 61. www.sensedia.com/br! Trace  de  calls,   Monitoramento,   Rate  LimiSng  e   Alertas  
  62. 62. status.aws.amazon.com! Status  Page,   Release  Notes,   Blog  
  63. 63. Foruns  de  discussão   e  Abertura  de  Sckets   desenvolvedores.extra.com.br!
  64. 64. 10Divulgação  
  65. 65. Hackathon  &  Open  InnovaSon  
  66. 66. 1 Apps  criadas:  300+   2 Developers  cadastrados:  800+   3 Tráfego:  20M  calls  /  15  dias   4 Eleições  mais  transparentes!  (ou  não)  
  67. 67. API   Strategy   Plan  &   Prepare   Design   &  Build   Run  &   Engage   1 2 3 4 5 6 7 8 9 10
  68. 68. Design  RESTful  2 1 Proposta  de  Valor   3 Versionamento   4 Error  Handling   5 Segurança   7 Developers  Portal   6 Hypermedia   8 Self-­‐Service   9 Confiabilidade   10 Divulgação  
  69. 69. www.linkedin.com/groups/API-­‐Web-­‐Services-­‐Brasil-­‐5000376   www.meetup.com/API-­‐Craoers-­‐Brasil/  
  70. 70. Kleber  Bacili   kleber.bacili@sensedia.com   @kleberbacili   10  atributos  de  uma   API  de  sucesso   www.slideshare.net/kleberbacili/  

×