SlideShare a Scribd company logo
1 of 97
Download to read offline
José Vahl 
jose.vahl@sensedia.com 
@josevahl 
APIs gerenciadas de 
ponta a ponta 
Fábio Rosato 
fabio.rosato@sensedia.com 
@frosato
José Vahl
 Gerente de Consultoria na 
Sensedia 
 Professor dos cursos de pós-graduação 
em SOA pelo IBMEC e 
Inatel 
 Atuação em diversos projetos 
complexos para grandes 
empresas grandes 
 Cielo, Telefônica | Vivo, TIM, 
Itaú, Bradesco Seguros entre 
outras 
Fábio Rosato
Agenda 
Sobre a Sensedia 
Contextualização 
Proposta de valor e Design 
Construção da API 
Execução e instrumentalização
Sobre a Sensedia
 Design, Exposição, Gerenciamento 
e Engajamento em APIs 
 Headquarter em Campinas, 
escritórios em São Paulo, Rio e Philadelphia 
 Classificados como Visionários no 
Quadrante Mágico do Gartner 
(*) Magic Quadrant for Integrated SOA Governance Technology Sets, 2009
Contextualização
The Internet 
of Things
O Tempo todo 
com o usuário 
Compartilhando 
tudo com todos 
The Nexus 
of Forces 
Inundação de dados 
e contexto 
Implantanto e rodando 
em algum lugar 
Source: Gartner (Jun/2012)
APIs 
Application Programming Interface 
é a cola digital que permite: 
• Acelerar parcerias 
• Simplificar integração mobile-cloud 
• Impulsionar a inovação aberta 
• Integrar aplicações de software 
• e Criar novos negócios
Proposta de valor e 
design
O tabuleiro das APIs 
16 
casas 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Plan & 
Prepare 
API 
Strategy 
Design 
& Build 
Run & 
Engage
Plan & 
Prepare 
API 
Strategy 
Design 
& Build 
Run & 
Engage 
Plan Prepare
As primeiras decisões de design…
Selecione a Tecnologia Adequada 
SOAP vs. REST
Selecione a Tecnologia Adequada 
XML vs. JSON
and the winners are… 
REST + JSON
1 
Proposta 
de valor 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
“Você pode até passar batom num porco, 
mas ele continuará sendo um porco!”
Plan & 
Prepare 
API 
Strategy 
Muitos 
projetos; 
Design 
Equipe 
& Build 
pequena 
Run & 
Engage 
Design 
Design & 
& 
Build 
Build
2 
URI 
Uniform Resource 
Identifier 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Estrutura Mínima 
URI: https://api.mycompany.com/name-of-api/resource 
HTTP ou 
HTTPS 
Seu domínio Nome da API 
(opcional) 
Recursos e 
Parâmetros
3 
Recursos 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
REST 
Representational State Transfer 
Estilo arquitetural criado por Roy Fielding 
RESTful 
Design que respeita os conceitos REST
Coleção 
/pedidos 
Resources 
Elemento 
/pedidos/{id}
RPC? 
/getAccount 
/getAllAccounts 
/createDirectory 
/updateGroupName 
/findClientById
4 
Operações 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
GET POST PUT DELETE
Resumo das Operações 
Resource POST 
(create) 
GET 
(read) 
PUT 
(update, create) 
DELETE 
(delete) 
/pedidos Cria novo 
pedido 
Lista pedidos -- Apaga todos 
os pedidos 
/pedidos/3747 -- Mostra pedido 
3747 
Atualiza pedido 
3747, se não 
existir, cria 
Apaga pedido 
3747
Método de Consulta 
(Cachable, Safe, Idempotente) 
GET /vendas/pedidos 
GET /checklist/item/4 
GET 
POST 
PUT 
DELETE 
PATCH 
OPTIONS 
HEAD
Método para “Criação” 
(Unsafe, Não-Idempotente) 
POST /clientes/9833201/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 
OPTIONS 
HEAD
GET 
POST 
PUT 
DELETE 
PATCH 
OPTIONS 
HEAD 
Método para “Atualização” 
(Unsafe, Idempotente) 
PUT /clientes/9833201/enderecos/1 
{ 
"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 
OPTIONS 
HEAD 
Método para Remoção 
(Unsafe, Idempotente) 
DELETE /pedidos/39009186 
DELETE /users/9877261/photos
GET 
POST 
PUT 
DELETE 
PATCH 
OPTIONS 
HEAD 
Método para Atualização parcial 
(Unsafe, Não-Idempotente) 
PATCH /users/9833201 
{ 
"email": "joao.silva@empresa.com" 
} 
PATCH /pedidos/39009186 
{ 
"status": "Cancelado" 
}
GET 
POST 
PUT 
DELETE 
PATCH 
OPTIONS 
HEAD 
OPTIONS 
Quais métodos são permitidos? 
OPTIONS /clientes 
Allow: HEAD,GET,POST,OPTIONS 
HEAD 
Quero ver apenas o Header 
HEAD /clientes 
Date: … 
Content-Type: application/json 
Content-Length: 12345
5 
Versionamento 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
THINGS 
CHANGE! 
v1 v2 v3 v4 v5 v6 v7
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 alternativas: 
• Twilio: /2010-04-01/Accounts/ 
• Salesforce.com: /services/data/v20.0/sobjects/Account
6 
Media 
Types 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Media 
Types 
Formatos Padronizados: 
application/json 
application/xml 
Formatos Proprietários: 
vnd.{nome_empresa}.{nome_media_type}+{formato} 
application/vnd.minhaempresa.pedido+json 
Parâmetros no Header: 
Request: Response: 
Accept: application/json 
Content-Type: application/json
7 
Status 
Codes 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
200 
400 
500 
Resultado OK 
Erro no Cliente 
Erro no Servidor
STATUS OK 200
Status & 
Error Codes 
200 
400 
500 
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 
} 
]
Status & 
Error Codes 
200 
400 
500 
201 Created 
POST /items/1234/bids 
{ 
"amount" : 602.99 
} 
201 Created 
Location: /items/1234/bids/100001 
{ 
"amount" : 602.99, 
"current_bid" : 510, 
"winning" : true 
}
Status & 
Error Codes 
200 
400 
500 
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 
}
Status & 
Error Codes 
200 
400 
500 
Outros Comuns 
401 
403 
404 
413 
429 
Unauthorized 
Forbidden 
Not Found 
Request is too Large 
Too Many Requests
Status & 
Error Codes 
200 
400 
500 
500 Internal Server Error 
PUT /vendas/v1/pedidos/9940382 
{ 
”status" : canceled 
} 
500 Internal Server Error 
{ 
"status" : 500, 
"message": ”Oops. Algo saiu errado” 
} 
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
8 
Filtros e 
Paginação 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Filtros 
Busca Global: 
GET /search?q=macbook+air 
Busca com escopo (subconjuntos): 
GET /vendas/v2/pedidos?status=concluido 
Respostas parciais: 
GET /pedidos/123AF15J?_fields=numero,data,valor
Paginação 
Recomendação: 
GET /pedidos?_offset=50&_limit=25 
Outras opções: 
Linkedin: 
Instagram: 
?start=50&count=25 
?min_id=3091&max_id=3245&count=25
9 
Caching 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Caching 
Evite tráfego desnecessário 
Latência de rede 
Sobrecarga nos servidores 
Atenção 
 Tempo de invalidação do cache 
 Sincronização em clusters
10 
Segurança 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
 Acesso não autorizado 
 Ataques 
 Sobrecarga 
 Confidencialidade 
 Implementações 
desastradas em clients
 Acesso não autorizado 
 Ataques 
 Sobrecarga 
 Confidencialidade 
 Implementações 
desastradas em clients
 Identificar App (?) 
 Identificar Usuário (?) 
 Identificar Device (?) 
Identidade e 
Autorização
Realtime API Traffic 
https://api.[you].com/… 
Powered by 
API Gateway 
 Rate Limiting 
 Monitoring & Alerts 
 Authentication Models 
 Policy Enforcement 
 Exception handling 
 Analytics on API Consumption 
Mobile Apps Partners’ Apps 
Internal Services 
@Backend 
API Gateway Architecture
11 
Callbacks 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Já chegamos? 
Já chegamos? 
Já chegamos? 
Já chegamos? 
Já chegamos? 
Stop Pooling Me
Marketplace API 
Chamadas Reversas: 
 Consulta estoque 
 Cálculo de frete 
 Novo pedido recebido 
https://api.mywebstore.com/v1/estoque 
https://api.mywebstore.com/v1/frete 
https://api.mywebstore.com/v1/pedido
12 
Hypermedia 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Hypermedia APIs 
HATEOAS = Hypermedia as the 
Engine of Application State 
*POX = Plain Old XML, Richardson Maturity Model
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" 
} 
] 
}
Plan & 
Prepare 
API 
Strategy 
Design 
& Build 
Muitos 
projetos; 
Run Run Run & 
& 
& 
Engage 
Equipe 
Engage 
Engage 
pequena
13 
Documentação 
interativa 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Docs incompletos, desatualizados, 
estáticos e com PDFs de 100 páginas
Developers 
https://developers.[you].com 
API Portal 
API Developers Portal 
 Introdução, tutoriais e 
exemplos de códigos 
 Self-service Signup 
 Documentação interativa 
(API Browsing) 
 Forum, Blog & Dev support 
 Testes facilitados (Sandbox) 
 Dev. Dashboard 
Powered by
Getting 
Started 
www.twilio.com/docs
Documentação 
Interativa 
desenvolvedores.extra.com.br
Exemplos de 
código na 
linguagem 
do developer 
sendgrid.com/docs
Sign-up e Tokens de 
acesso automáticos 
stripe.com/docs
REST Console ou 
Sandbox / Playgroung 
dev.transparencia.org.br
14 
Construção 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Hold on…
15 
Instrumentalização 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Problemas de 
Performance 
Indisponibilidade 
Bugs Confiabilidade 
Mudanças 
(não-planejadas) 
Falta de 
Suporte
API Suite 
• Login / signup 
• Criação de Apps 
• Gestão de tokens 
• Foruns e suporte 
• Sandbox 
• Dev Dashboard 
Backend 
• Autenticação 
• Roteamento 
• Políticas / quotas 
• Degub / trace 
• Monitoramento 
• Gestão de tokens
www.sensedia.com/br 
Trace de calls, 
Monitoramento, 
Rate Limiting e 
Alertas
status.aws.amazon.com 
Status Page, 
Release Notes, 
Blog
Foruns de discussão 
e Abertura de tickets 
desenvolvedores.extra.com.br
16 
Divulgação 
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Hackathon & Open Innovation
1 Apps criadas: 300+ 
2 Developers cadastrados: 800+ 
3 Tráfego: 20M calls / 15 dias 
4 Eleições mais transparentes!
Plan & 
Prepare 
API 
Strategy 
Design 
& Build 
Run & 
Engage
Valor URI Recursos Operações 
Versionamento Media Types Status Codes Filtros 
Caching Segurança Callbacks Hypermedia 
Documentação Construção Instrum/zação Divulgação
Construção da API
Execução e 
instrumentalização
Junte-se ao time!
Fábio Rosato 
fabio.rosato@sensedia.com 
@frosato 
José Vahl 
jose.vahl@sensedia.com 
@josevahl

More Related Content

Similar to APIs gerenciadas de ponta a ponta

Impulsionando startups com api publica
Impulsionando startups com api publicaImpulsionando startups com api publica
Impulsionando startups com api publicaFábio Rosato
 
Design de APIs RESTful Seguras e Escaláveis
Design de APIs RESTful Seguras e EscaláveisDesign de APIs RESTful Seguras e Escaláveis
Design de APIs RESTful Seguras e EscaláveisKleber Bacili
 
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber BaciliDesign de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber BaciliiMasters
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesiMasters
 
Fatec 2016 - Case Hackathon Campinas
Fatec 2016 - Case Hackathon CampinasFatec 2016 - Case Hackathon Campinas
Fatec 2016 - Case Hackathon CampinasClaudenir Freitas
 
Cafe & Open Source
Cafe & Open SourceCafe & Open Source
Cafe & Open Sourceguest6b64fa3
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lioLuis Moraes Junior
 
O que RESTa para sua aplicação
O que RESTa para sua aplicaçãoO que RESTa para sua aplicação
O que RESTa para sua aplicaçãoDaniel Satiro
 
Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.AlexSandro Cruz
 
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS SummitIndustry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS SummitAmazon Web Services
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPHerberth Amaral
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012Carlos Casalicchio
 
Monitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMonitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMarkus Christen
 
Plataforma Premier Completa 2017
Plataforma Premier Completa 2017Plataforma Premier Completa 2017
Plataforma Premier Completa 2017Jorge Biesczad Jr.
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveisThales Lima
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR, UnB
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santosfsolari
 
Api first desenhando e testando sua api like a boss
Api first   desenhando e testando sua api like a bossApi first   desenhando e testando sua api like a boss
Api first desenhando e testando sua api like a bossRenan Petronilho Sant Anna
 

Similar to APIs gerenciadas de ponta a ponta (20)

Impulsionando startups com api publica
Impulsionando startups com api publicaImpulsionando startups com api publica
Impulsionando startups com api publica
 
Design de APIs RESTful Seguras e Escaláveis
Design de APIs RESTful Seguras e EscaláveisDesign de APIs RESTful Seguras e Escaláveis
Design de APIs RESTful Seguras e Escaláveis
 
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber BaciliDesign de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
Design de APIs RESTful – Seguras, Escaláveis e Interoperáveis, por Kleber Bacili
 
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integraçõesPHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
 
Fatec 2016 - Case Hackathon Campinas
Fatec 2016 - Case Hackathon CampinasFatec 2016 - Case Hackathon Campinas
Fatec 2016 - Case Hackathon Campinas
 
Cafe & Open Source
Cafe & Open SourceCafe & Open Source
Cafe & Open Source
 
Cafe & Open Source
Cafe & Open SourceCafe & Open Source
Cafe & Open Source
 
Deck apix 2017 design & security - case cielo lio
Deck apix 2017   design & security - case cielo lioDeck apix 2017   design & security - case cielo lio
Deck apix 2017 design & security - case cielo lio
 
O que RESTa para sua aplicação
O que RESTa para sua aplicaçãoO que RESTa para sua aplicação
O que RESTa para sua aplicação
 
Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.
 
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS SummitIndustry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
Industry 4.0- Managing the protocol zoo - SVC204 - São Paulo AWS Summit
 
Cobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIPCobrancas online na sua aplicacao com MoIP
Cobrancas online na sua aplicacao com MoIP
 
Visão Geral De Desenvolvimento Web Sre 2012
Visão Geral De Desenvolvimento Web   Sre 2012Visão Geral De Desenvolvimento Web   Sre 2012
Visão Geral De Desenvolvimento Web Sre 2012
 
Monitoração de Aplicações Distribuídas
Monitoração de Aplicações DistribuídasMonitoração de Aplicações Distribuídas
Monitoração de Aplicações Distribuídas
 
Plataforma Premier Completa 2017
Plataforma Premier Completa 2017Plataforma Premier Completa 2017
Plataforma Premier Completa 2017
 
Backend para dispositivos moveis
Backend para dispositivos moveisBackend para dispositivos moveis
Backend para dispositivos moveis
 
CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10CJR Apresenta: OWASP TOP10
CJR Apresenta: OWASP TOP10
 
Plataforma Premier 2017
Plataforma Premier 2017Plataforma Premier 2017
Plataforma Premier 2017
 
Sala 2 03 o auth e cadastro de produtos - danilo santos
Sala 2 03   o auth e cadastro de produtos - danilo santosSala 2 03   o auth e cadastro de produtos - danilo santos
Sala 2 03 o auth e cadastro de produtos - danilo santos
 
Api first desenhando e testando sua api like a boss
Api first   desenhando e testando sua api like a bossApi first   desenhando e testando sua api like a boss
Api first desenhando e testando sua api like a boss
 

APIs gerenciadas de ponta a ponta

  • 1. José Vahl jose.vahl@sensedia.com @josevahl APIs gerenciadas de ponta a ponta Fábio Rosato fabio.rosato@sensedia.com @frosato
  • 3.  Gerente de Consultoria na Sensedia  Professor dos cursos de pós-graduação em SOA pelo IBMEC e Inatel  Atuação em diversos projetos complexos para grandes empresas grandes  Cielo, Telefônica | Vivo, TIM, Itaú, Bradesco Seguros entre outras Fábio Rosato
  • 4. Agenda Sobre a Sensedia Contextualização Proposta de valor e Design Construção da API Execução e instrumentalização
  • 6.  Design, Exposição, Gerenciamento e Engajamento em APIs  Headquarter em Campinas, escritórios em São Paulo, Rio e Philadelphia  Classificados como Visionários no Quadrante Mágico do Gartner (*) Magic Quadrant for Integrated SOA Governance Technology Sets, 2009
  • 7.
  • 10. O Tempo todo com o usuário Compartilhando tudo com todos The Nexus of Forces Inundação de dados e contexto Implantanto e rodando em algum lugar Source: Gartner (Jun/2012)
  • 11. APIs Application Programming Interface é a cola digital que permite: • Acelerar parcerias • Simplificar integração mobile-cloud • Impulsionar a inovação aberta • Integrar aplicações de software • e Criar novos negócios
  • 12. Proposta de valor e design
  • 13. O tabuleiro das APIs 16 casas Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 14. Plan & Prepare API Strategy Design & Build Run & Engage
  • 15. Plan & Prepare API Strategy Design & Build Run & Engage Plan Prepare
  • 16. As primeiras decisões de design…
  • 17. Selecione a Tecnologia Adequada SOAP vs. REST
  • 18. Selecione a Tecnologia Adequada XML vs. JSON
  • 19. and the winners are… REST + JSON
  • 20. 1 Proposta de valor Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 21. “Você pode até passar batom num porco, mas ele continuará sendo um porco!”
  • 22. Plan & Prepare API Strategy Muitos projetos; Design Equipe & Build pequena Run & Engage Design Design & & Build Build
  • 23. 2 URI Uniform Resource Identifier Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 24. Estrutura Mínima URI: https://api.mycompany.com/name-of-api/resource HTTP ou HTTPS Seu domínio Nome da API (opcional) Recursos e Parâmetros
  • 25. 3 Recursos Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 26. REST Representational State Transfer Estilo arquitetural criado por Roy Fielding RESTful Design que respeita os conceitos REST
  • 27. Coleção /pedidos Resources Elemento /pedidos/{id}
  • 28. RPC? /getAccount /getAllAccounts /createDirectory /updateGroupName /findClientById
  • 29. 4 Operações Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 30. GET POST PUT DELETE
  • 31.
  • 32. Resumo das Operações Resource POST (create) GET (read) PUT (update, create) DELETE (delete) /pedidos Cria novo pedido Lista pedidos -- Apaga todos os pedidos /pedidos/3747 -- Mostra pedido 3747 Atualiza pedido 3747, se não existir, cria Apaga pedido 3747
  • 33. Método de Consulta (Cachable, Safe, Idempotente) GET /vendas/pedidos GET /checklist/item/4 GET POST PUT DELETE PATCH OPTIONS HEAD
  • 34. Método para “Criação” (Unsafe, Não-Idempotente) POST /clientes/9833201/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 OPTIONS HEAD
  • 35. GET POST PUT DELETE PATCH OPTIONS HEAD Método para “Atualização” (Unsafe, Idempotente) PUT /clientes/9833201/enderecos/1 { "endereco": "Av. Brigadeiro Faria Lima", "numero": "3800", "complemento": "18o. Andar", "bairro": "Itaim Bibi", "cidade": "São Paulo", "estado": "SP", "cep": "04538-132" }
  • 36. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Remoção (Unsafe, Idempotente) DELETE /pedidos/39009186 DELETE /users/9877261/photos
  • 37. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Atualização parcial (Unsafe, Não-Idempotente) PATCH /users/9833201 { "email": "joao.silva@empresa.com" } PATCH /pedidos/39009186 { "status": "Cancelado" }
  • 38. GET POST PUT DELETE PATCH OPTIONS HEAD OPTIONS Quais métodos são permitidos? OPTIONS /clientes Allow: HEAD,GET,POST,OPTIONS HEAD Quero ver apenas o Header HEAD /clientes Date: … Content-Type: application/json Content-Length: 12345
  • 39. 5 Versionamento Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 40. THINGS CHANGE! v1 v2 v3 v4 v5 v6 v7
  • 41. 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 alternativas: • Twilio: /2010-04-01/Accounts/ • Salesforce.com: /services/data/v20.0/sobjects/Account
  • 42. 6 Media Types Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 43. Media Types Formatos Padronizados: application/json application/xml Formatos Proprietários: vnd.{nome_empresa}.{nome_media_type}+{formato} application/vnd.minhaempresa.pedido+json Parâmetros no Header: Request: Response: Accept: application/json Content-Type: application/json
  • 44. 7 Status Codes Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 45. 200 400 500 Resultado OK Erro no Cliente Erro no Servidor
  • 47. Status & Error Codes 200 400 500 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 } ]
  • 48. Status & Error Codes 200 400 500 201 Created POST /items/1234/bids { "amount" : 602.99 } 201 Created Location: /items/1234/bids/100001 { "amount" : 602.99, "current_bid" : 510, "winning" : true }
  • 49. Status & Error Codes 200 400 500 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 }
  • 50. Status & Error Codes 200 400 500 Outros Comuns 401 403 404 413 429 Unauthorized Forbidden Not Found Request is too Large Too Many Requests
  • 51. Status & Error Codes 200 400 500 500 Internal Server Error PUT /vendas/v1/pedidos/9940382 { ”status" : canceled } 500 Internal Server Error { "status" : 500, "message": ”Oops. Algo saiu errado” } http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
  • 52. 8 Filtros e Paginação Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 53. Filtros Busca Global: GET /search?q=macbook+air Busca com escopo (subconjuntos): GET /vendas/v2/pedidos?status=concluido Respostas parciais: GET /pedidos/123AF15J?_fields=numero,data,valor
  • 54. Paginação Recomendação: GET /pedidos?_offset=50&_limit=25 Outras opções: Linkedin: Instagram: ?start=50&count=25 ?min_id=3091&max_id=3245&count=25
  • 55. 9 Caching Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 56. Caching Evite tráfego desnecessário Latência de rede Sobrecarga nos servidores Atenção  Tempo de invalidação do cache  Sincronização em clusters
  • 57. 10 Segurança Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 58.  Acesso não autorizado  Ataques  Sobrecarga  Confidencialidade  Implementações desastradas em clients
  • 59.  Acesso não autorizado  Ataques  Sobrecarga  Confidencialidade  Implementações desastradas em clients
  • 60.
  • 61.  Identificar App (?)  Identificar Usuário (?)  Identificar Device (?) Identidade e Autorização
  • 62. Realtime API Traffic https://api.[you].com/… Powered by API Gateway  Rate Limiting  Monitoring & Alerts  Authentication Models  Policy Enforcement  Exception handling  Analytics on API Consumption Mobile Apps Partners’ Apps Internal Services @Backend API Gateway Architecture
  • 63. 11 Callbacks Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 64. Já chegamos? Já chegamos? Já chegamos? Já chegamos? Já chegamos? Stop Pooling Me
  • 65. Marketplace API Chamadas Reversas:  Consulta estoque  Cálculo de frete  Novo pedido recebido https://api.mywebstore.com/v1/estoque https://api.mywebstore.com/v1/frete https://api.mywebstore.com/v1/pedido
  • 66. 12 Hypermedia Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 67. Hypermedia APIs HATEOAS = Hypermedia as the Engine of Application State *POX = Plain Old XML, Richardson Maturity Model
  • 68. GET /items?q=macbook+air+new { "results" : [ { "id" : 123, "name" : "Macbook Air 2010 LIKE NEW", "price" : "499" } ] } SEM Hypermedia
  • 69. 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" } ] }
  • 70. Plan & Prepare API Strategy Design & Build Muitos projetos; Run Run Run & & & Engage Equipe Engage Engage pequena
  • 71. 13 Documentação interativa Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 72. Docs incompletos, desatualizados, estáticos e com PDFs de 100 páginas
  • 73. Developers https://developers.[you].com API Portal API Developers Portal  Introdução, tutoriais e exemplos de códigos  Self-service Signup  Documentação interativa (API Browsing)  Forum, Blog & Dev support  Testes facilitados (Sandbox)  Dev. Dashboard Powered by
  • 74.
  • 77. Exemplos de código na linguagem do developer sendgrid.com/docs
  • 78. Sign-up e Tokens de acesso automáticos stripe.com/docs
  • 79. REST Console ou Sandbox / Playgroung dev.transparencia.org.br
  • 80. 14 Construção Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 82. 15 Instrumentalização Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 83.
  • 84. Problemas de Performance Indisponibilidade Bugs Confiabilidade Mudanças (não-planejadas) Falta de Suporte
  • 85. API Suite • Login / signup • Criação de Apps • Gestão de tokens • Foruns e suporte • Sandbox • Dev Dashboard Backend • Autenticação • Roteamento • Políticas / quotas • Degub / trace • Monitoramento • Gestão de tokens
  • 86. www.sensedia.com/br Trace de calls, Monitoramento, Rate Limiting e Alertas
  • 87. status.aws.amazon.com Status Page, Release Notes, Blog
  • 88. Foruns de discussão e Abertura de tickets desenvolvedores.extra.com.br
  • 89. 16 Divulgação Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 90. Hackathon & Open Innovation
  • 91. 1 Apps criadas: 300+ 2 Developers cadastrados: 800+ 3 Tráfego: 20M calls / 15 dias 4 Eleições mais transparentes!
  • 92. Plan & Prepare API Strategy Design & Build Run & Engage
  • 93. Valor URI Recursos Operações Versionamento Media Types Status Codes Filtros Caching Segurança Callbacks Hypermedia Documentação Construção Instrum/zação Divulgação
  • 97. Fábio Rosato fabio.rosato@sensedia.com @frosato José Vahl jose.vahl@sensedia.com @josevahl