• Nenhum resultado encontrado

10 atributos de uma API de sucesso

N/A
N/A
Protected

Academic year: 2021

Share "10 atributos de uma API de sucesso"

Copied!
73
0
0

Texto

(1)

Kleber  Bacili  

kleber.bacili@sensedia.com   @kleberbacili  

slideshare.net/kleberbacili  

10  atributos  de  uma  

API  de  sucesso  

 

Do  design  RESTful  e  segurança,    

(2)

Kleber  Bacili  

kleber.bacili@sensedia.com   @kleberbacili  

(3)

Agenda  

Contextualização  

Planejamento  e  Preparação  

Design  e  Construção  

(4)
(5)

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  

(6)

O  Tempo  todo    

com  o  usuário  

ComparMlhando    

tudo  com  todos  

Inundação  de  dados    

e  contexto  

Implantanto  e  rodando    

em  algum  lugar  

Source:  Gartner  (Jun/2012)  

The  Nexus    

of  Forces  

(7)

The  Internet  

of  Things  

(8)
(9)

10

Atributos  de  uma  

API  de  sucesso  

(10)

API  

Strategy  

Plan  &   Prepare   Design   &  Build   Run  &   Engage  

(11)

API  

Strategy  

Plan  &   Prepare   Design   &  Build   Run  &   Engage  

Plan  &  

Prepare  

(12)
(13)

Selecione  a  Tecnologia  Adequada  

REST

(14)

Selecione  a  Tecnologia  Adequada  

JSON

(15)

and the winners are…

(16)
(17)

“Você  pode  até  passar  batom  num  porco,  

mas  ele  conOnuará  sendo  um  porco!”  

(18)

API  

Strategy  

Plan  &   Prepare   Design   &  Build   Run  &   Engage   Design   &     Build  

Muitos  

projetos;  

Equipe  

pequena  

Design  &  

Build  

(19)
(20)

REST  

RepresentaMonal  State  Transfer  

EsMlo  arquitetural  criado  por  Roy  Fielding  

RESTful    

(21)

Coleção  

/

pedidos!

Resources  

Elemento  

(22)

/getAccount!

/getAllAccounts!

/createDirectory!

/updateGroupName!

/findClientById!

RPC?  

(23)
(24)

Método  de  Consulta  

GET

/vendas/pedidos!

GET

/checklist/item/4!

GET!

POST!

PUT!

DELETE!

PATCH!

(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)

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)

GET!

POST!

PUT!

DELETE!

PATCH!

Método  para  “Remoção”  

DELETE

/pedidos/{id}!

(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)
(30)
(31)

v1  

v2  

v3  

v4  

v5  

v6  

v7  

THINGS  

CHANGE!  

(32)

Versionamento  

Versão  

URI:  

https://api.mycompany.com/name-of-api/v2/resource!

HTTP  ou    

HTTPS  

Seu  domínio  

Nome  da  API  

(opcional)  

Parâmetros  

Recursos  e  

Outras  alternaMvas:  

•  Twilio:  /2010-­‐04-­‐01/Accounts/    

(33)
(34)

200!

400!

500!

Resultado  OK  

Erro  no  Client  

Erro  no  Server  

(35)
(36)

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

(37)

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

(38)

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

(39)

200!

!

!

400!

!

!

500!

Status  &    

Error  Codes  

Outros  Comuns  

401!

!

403!

 

404!

!

413!

!

429!

Unauthorized  

Forbidden  

Not  Found  

Request  is  too  Large  

Too  Many  Requests  

(40)

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

(41)

Mais  informações?  

Vídeo  do  Webinar  

(42)
(43)

v

Acesso  não  autorizado  

v

Ataques  

v

Sobrecarga  

v

Confidencialidade  

v

Implementações    

(44)

v

Acesso  não  autorizado  

v

Ataques  

v

Sobrecarga  

v

Confidencialidade  

v

Implementações    

(45)

þ

Identificar App (?)

þ

Identificar Usuário (?)

þ

Identificar Device (?)

Identidade e

Autorização

(46)
(47)
(48)

Hypermedia  APIs  

*POX  =  Plain  Old  XML,  Richardson  Maturity  Model  

HATEOAS  =  Hypermedia  as  the  

(49)

GET /items?q=macbook+air+new  

{!

"results" : [ ! {!

"id" : 123,!

"name" : "Macbook Air 2010 LIKE NEW", ! "price" : "499" ! }! ]! }  

SEM  

Hypermedia  

(50)

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"  

}! ]! }  

(51)

API  

Strategy  

Plan  &   Prepare   Design   &  Build   Run  &  

Engage  Engage  Run  &  

Muitos  

projetos;  

Equipe  

pequena  

Run  &  

Engage  

(52)
(53)

Docs  incompletos,  desatualizados,    

estáOcos  e  com  PDFs  de  100  páginas  

(54)

Gehng    

Started  

(55)

Documentação    

InteraOva  

(56)

Exemplos  de    

código  na    

linguagem    

do  developer  

(57)
(58)

Sign-­‐up  e  Tokens  de  

acesso  automáOcos  

(59)

REST  Console  ou    

Sandbox  /  Playgroung  

(60)
(61)
(62)

Confiabilidade  

Bugs  

Problemas  de  

Performance  

Indisponibilidade  

Mudanças    

(não-­‐planejadas)  

Falta  de  

Suporte  

(63)

www.sensedia.com/br!

Trace  de  calls,  

Monitoramento,  

Rate  LimiOng  e  

Alertas  

(64)

status.aws.amazon.com!

Status  Page,  

Release  Notes,  

(65)

Foruns  de  discussão  

e  Abertura  de  Ockets  

(66)
(67)
(68)

1

Apps  criadas:  300+  

2

Developers  cadastrados:  800+  

3

Tráfego:  20M  calls  /  15  dias  

(69)

API  

Strategy  

Plan  &   Prepare   Design   &  Build   Run  &   Engage  

(70)

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  

(71)
(72)
(73)

Kleber  Bacili  

kleber.bacili@sensedia.com   @kleberbacili  

Referências

Documentos relacionados

In this study we used the Schmidt and Sickles (1984) stochastic production frontier time-invariant inefficiency model to analyze the efficiency of each Member

São levantados e apresentados os métodos tradicionais de ensaios em máquinas elétricas rotativas: motores de indução e geradores síncronos e, então, determinados os

Se consideró que las ovejas habian producido por lo menos un cuerpo lúteo (CL) siempre que los niveles plasmáticos de progesterona fuera n superiores a 0,5

TERRITÓRIO E POLÍTICAS PÚBLICAS Estudo de Avaliação Económica da Execução da Medida Agroambiental Proteção Integrada Aplicada ao Setor Vitivinícola na Região do Alentejo

Distribuição dos entrevistados, por Indicador de Consumo de Informação Científica (Icic), segundo sua opinião a respeito da afirmação de que damos muito valor à ciência e pouco

Olhando para tais afirmativas, é possível ver que: (a) interesse declarado do indivíduo não está associado com as atitudes mensuradas; (b) formação educacional só se

A comparação entre o comprometimento organizacional e a resistência a mudanças, levando em conta organizações de diferentes portes, por um lado indicou que os recursos

A estrutura deste trabalho é a seguinte: a primeira parte explora as mudanças no mundo do trabalho; a segunda discute a resposta dos sindicatos a essas mudanças; a terceira examina