campus party 2015: os 10 atributos de uma api de sucesso

74
Kleber Bacili [email protected] @kleberbacili 10 atributos de uma API de sucesso

Upload: kleber-bacili

Post on 17-Jul-2015

188 views

Category:

Technology


2 download

TRANSCRIPT

Kleber  Bacili  [email protected]  @kleberbacili  

10  atributos  de  uma  API  de  sucesso  

www.slideshare.net/kleberbacili/  

Kleber  Bacili  [email protected]  @kleberbacili  

Cerquilho  

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  

Agenda  

Contextualização  

Planejamento  e  Preparação  

Design  e  Construção  

Execução  e  Engajamento  

Contextualização  

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  

The  Internet  of  Things  

10 Atributos  de  uma  API  de  sucesso  

API  Strategy  

Plan  &  Prepare  

Design  &  Build  

Run  &  Engage  

API  Strategy  

Plan  &  Prepare  

Design  &  Build  

Run  &  Engage  

Plan  &  Prepare  

As  primeiras  decisões  de  design…  

Selecione  a  Tecnologia  Adequada  

REST SOAP vs.

Selecione  a  Tecnologia  Adequada  

JSON XML vs.

and the winners are…

REST + JSON

1 Proposta  de  Valor  

“Você  pode  até  passar  batom  num  porco,  mas  ele  conSnuará  sendo  um  porco!”  

API  Strategy  

Plan  &  Prepare  

Design  &  Build  

Run  &  Engage  

Design  &    

Build  

Muitos  projetos;  Equipe  pequena  

Design  &  Build  

2 Design  RESTful  

REST  RepresentaKonal  State  Transfer  EsKlo  arquitetural  criado  por  Roy  Fielding  

RESTful    Design  que  respeita  os  conceitos  REST  

Coleção  /pedidos!

Resources  Elemento  

/pedidos/{id} !

/getAccount!/getAllAccounts!/createDirectory!/updateGroupName!/findClientById!

RPC?  

GET  POST    PUT  DELETE  

Método  de  Consulta  

GET /vendas/pedidos!

GET /checklist/item/4 !

GET !

POST !

PUT !

DELETE !

PATCH !

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 !

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" !}  

GET !

POST !

PUT !

DELETE !

PATCH !

Método  para  “Remoção”  

DELETE /pedidos/{id} !

DELETE /users/98W3G32K01/photos !

GET !

POST !

PUT !

DELETE !

PATCH !

Método  para  “Atualização  parcial”  

PATCH /users/98W3G32K01 !{ ! "email": "[email protected]" !}  

PATCH /pedidos/39009186 !{ ! "status": "Cancelado" !}  

3 Versionamento  

v1   v2   v3   v4   v5   v6   v7  

THINGS  CHANGE!  

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    

4 Error  Handling  

200 !

400 !

500 !

Resultado  OK  

Erro  no  Client  

Erro  no  Server  

STATUS   OK 200 !

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 ! } !] !

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 !} !

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 !} !

200 !!!

400 !!!

500 !

Status  &    Error  Codes  

Outros  Comuns  

401 !!

403 !  

404 !!

413 !!

429 !

Unauthorized  

Forbidden  

Not  Found  

Request  is  too  Large  

Too  Many  Requests  

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  

Mais  informações?  

Vídeo  do  Webinar  

hdp://downloads.sensedia.com/webinar-­‐design-­‐de-­‐apis-­‐resful  

5 Segurança  

v Acesso  não  autorizado  v Ataques  v Sobrecarga  v Confidencialidade  v  Implementações    

desastradas  de  clients  

v Acesso  não  autorizado  v Ataques  v Sobrecarga  v Confidencialidade  v  Implementações    

desastradas  de  clients  

þ  Identificar App (?)

þ  Identificar Usuário (?)

þ  Identificar Device (?)

Identidade e Autorização

HTTPS,  sempre!  

6 Hypermedia  

Hypermedia  APIs  

*POX  =  Plain  Old  XML,  Richardson  Maturity  Model  

HATEOAS  =  Hypermedia  as  the  Engine  of  ApplicaKon  State  

GET /items?q=macbook+air+new  { ! "results" : [ ! { ! "id" : 123, ! "name" : "Macbook Air 2010 LIKE NEW", ! "price" : "499" ! } ! ] !}  

SEM  Hypermedia  

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"   } ! ] !}  

API  Strategy  

Plan  &  Prepare  

Design  &  Build  

Run  &  Engage  Run  &  Engage  

Muitos  projetos;  Equipe  pequena  

Run  &  Engage  

7 Developers  Portal  

Docs  incompletos,  desatualizados,    estáScos  e  com  PDFs  de  100  páginas  

Gekng    Started  

www.twilio.com/docs !

Documentação    InteraSva  

desenvolvedores.extra.com.br!

Exemplos  de    código  na    linguagem    

do  developer  

sendgrid.com/docs !

8 Self-­‐Service  

Sign-­‐up  e  Tokens  de  acesso  automáScos  

stripe.com/docs !

REST  Console  ou    Sandbox  /  Playgroung  

dev.transparencia.org.br!

9 Confiabilidade  

Confiabilidade  Bugs  

Problemas  de  Performance  

Indisponibilidade  

Mudanças    (não-­‐planejadas)  

Falta  de  Suporte  

www.sensedia.com/br !

Trace  de  calls,  Monitoramento,  Rate  LimiSng  e  

Alertas  

status.aws.amazon.com!

Status  Page,  Release  Notes,  

Blog  

Foruns  de  discussão  e  Abertura  de  Sckets  

desenvolvedores.extra.com.br!

10 Divulgação  

Hackathon  &  Open  InnovaSon  

1 Apps  criadas:  300+  

2 Developers  cadastrados:  800+  

3 Tráfego:  20M  calls  /  15  dias  

4 Eleições  mais  transparentes!  (ou  não)  

API  Strategy  

Plan  &  Prepare  

Design  &  Build  

Run  &  Engage  

1

2 3 4 5 6

7 8 9 10

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  

www.linkedin.com/groups/API-­‐Web-­‐Services-­‐Brasil-­‐5000376   www.meetup.com/API-­‐Craoers-­‐Brasil/  

Kleber  Bacili  [email protected]  @kleberbacili  

10  atributos  de  uma  API  de  sucesso  

www.slideshare.net/kleberbacili/