Kleber	
  Bacili	
  
	
  	
  	
  	
  	
  	
  	
  kleber.bacili@sensedia.com	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  @kleberbacili	
  
Construção	
  de	
  APIs	
  	
  
para	
  Apps	
  móveis	
  
www.slideshare.net/kleberbacili/	
  
Kleber	
  Bacili	
  
kleber.bacili@sensedia.com	
  
@kleberbacili	
  
v  SOA,	
  Microservices	
  e	
  APIs	
  
v  Projetos	
  bacaníssimos	
  
v  Ferramentas	
  sensacionais	
  
v  Headquarter	
  em	
  Campinas,	
  	
  
escritórios	
  em	
  SP,	
  Rio	
  e	
  EUA	
  
Alguns	
  Clientes	
  
App	
  Economy	
  
SSOCIAL	
  
MMOBILE	
  
AANALYTICS	
  
CCLOUD	
  
The	
  Internet	
  
of	
  Things	
  
API
First	
  
APIs	
  
v  MúlAplos	
  Canais	
  
v  Experiências	
  e	
  Telas	
  diferentes	
  
v  Parceiros	
  externos	
  e	
  Clientes	
  
v  Integrações	
  OnPremise–Cloud	
  
TI	
  BIMODAL	
  
API	
  
Layer	
  
Backend	
  
Partners/	
  
Developers	
  
Users	
   Apps	
  
8Lições	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
Back-­‐end	
  Devs	
  Front-­‐end	
  Devs	
  
v  RESTful	
  
v  Microservices	
  
v  DevOps	
  
v  Containers	
  
v  à	
  DX	
  
v  Plataformas	
  NaUvas	
  
v  HTML5	
  e	
  Javascript	
  
v  Outros	
  Devices	
  (wearables,	
  IoT)	
  
v  Empresas	
  parceiras:	
  Open	
  APIs	
  
v  à	
  UX	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
§  Código	
  Legado	
  
§  SOAP	
  Services	
  
§  Tabelas	
  de	
  Banco	
  
Design	
  	
  
ProblemáUco	
  
A ARMADILHA DA AUTOMATIZAÇÃO
{ RESTful }
Coleção	
  
/pedidos!
Resources	
  
Elemento	
  
/pedidos/{id}!
/getAccount!
/getAllAccounts!
/createDirectory!
/updateGroupName!
/findClientById!
RPC?	
  
GET /vendas/pedidos!
POST /clientes/98W3G32K01/enderecos!
{…}	
  
PUT /clientes/98W3G32K01/enderecos/1!
{…}	
  
DELETE /users/98W3G32K01/photos!
PATCH /users/98W3G32K01 !
{…}	
  
Mais	
  informações?	
  
Vídeo	
  do	
  Webinar	
  
hLp://downloads.sensedia.com/webinar-­‐design-­‐de-­‐apis-­‐resQul	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
THINGS
CHANGE!
v1	
  
v2	
  
v3	
   v4	
  
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	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
200!
400!
500!
Resultado	
  OK	
  
Erro	
  no	
  Client	
  
Erro	
  no	
  Server	
  
STATUS	
   OK 200!
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
v Acesso	
  não	
  autorizado	
  
v Ataques	
  
v Privacidade	
  
v Integridade	
  
v Disponibilidade	
  
v Acesso	
  não	
  autorizado	
  
v Ataques	
  
v Sobrecarga	
  
v Confidencialidade	
  
v Implementações	
  	
  
desastradas	
  de	
  clients	
  
Básico	
  
Intermediário	
  
CríUco	
  
v  Open?	
  
v  Informações	
  
Sensíveis?	
  
v  Transações?	
  
Usuários	
   Apps	
  
Basic	
  HTTP	
   OAuth2	
   OpenID	
  Connect	
  
Estratégias	
  de	
  AutenUcação	
  /	
  Autorização	
  
App	
  Token	
  
Definição	
  de	
  Escopo	
  
Revogação	
  	
  
de	
  Token	
  
Client	
  Apps	
  
APIs	
  
Rate	
  LimiUng	
  Policy	
  
JSON	
  Threat	
  Policy	
  
Payload	
  Size	
  Policy	
  
IP	
  Filtering	
  Policy	
  
…	
  
API	
  Gateway	
  
Outras	
  dicas:	
  
	
  	
  
v  IdenAficadores	
  UUID	
  
v  Nunca	
  use	
  Tokens	
  na	
  URL	
  
v  Gerenciamento	
  de	
  Apps	
  
Os	
  Fundamentos	
  da	
  
Segurança	
  de	
  APIs	
  
WEBINAR
hLp://downloads.sensedia.com/webinar-­‐seguranca-­‐de-­‐apis	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
Caching	
  
Evite	
  tráfego	
  desnecessário	
  
	
  Latência	
  de	
  rede	
  	
  
	
  Sobrecarga	
  nos	
  servidores	
  
Pontos	
  de	
  Atenção	
  
v  Local	
  de	
  cacheamento	
  
v  Tempo	
  de	
  invalidação	
  do	
  cache	
  
v  Sincronização	
  em	
  clusters	
  
Filtros	
  
GET /vendas/v2/pedidos?_status=concluido!
GET /pedidos/123AF15J?_fields=numero,data,valor!
Busca	
  com	
  escopo	
  (subconjuntos):	
  
Respostas	
  parciais:	
  
Paginação	
  
GET /pedidos?_offset=50&_limit=25!
Recomendação:	
  
Outras	
  opções:	
  
Linkedin:	
  	
  	
  
	
  
Instagram:	
  	
  
?start=50&count=25	
  
?min_id=3091&max_id=3245&count=25	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
Compreenda	
  o	
  
PADRÃO DE USO
das	
  APPs	
  e	
  APIs	
  
Faça	
  o	
  	
  
LOGGING
detalhado	
  
Dica:	
  cuidado	
  com	
  o	
  	
  
volume	
  de	
  dados	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
Scaling	
  the	
  Ne:lix	
  API	
  @	
  slideshare	
  
Equipes
Versões
Monitoração
Segurança Tráfego
RESTful
Erros
Evolução
Kleber	
  Bacili	
  
	
  	
  	
  	
  	
  	
  	
  kleber.bacili@sensedia.com	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  
	
  	
  	
  	
  	
  	
  	
  @kleberbacili	
  
Construção	
  de	
  APIs	
  	
  
para	
  Apps	
  móveis	
  

Construção de APIs para Apps Móveis