SlideShare a Scribd company logo
1 of 73
Download to read offline
Kleber 
Bacili 
kleber.bacili@sensedia.com 
@kleberbacili 
slideshare.net/kleberbacili 
10 
atributos 
de 
uma 
API 
de 
sucesso 
Do 
design 
RESTful 
e 
segurança, 
a 
formas 
de 
divulgação 
e 
engajamento
Kleber 
Bacili 
kleber.bacili@sensedia.com 
@kleberbacili 
Cerquilho
Agenda 
Contextualização 
Planejamento 
e 
Preparação 
Design 
e 
Construção 
Execução 
e 
Engajamento
Contextualização
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
O 
Tempo 
todo 
com 
o 
usuário 
ComparMlhando 
tudo 
com 
todos 
The 
Nexus 
of 
Forces 
Inundação 
de 
dados 
e 
contexto 
Implantanto 
e 
rodando 
em 
algum 
lugar 
Source: 
Gartner 
(Jun/2012)
The 
Internet 
of 
Things
10 Atributos 
de 
uma 
API 
de 
sucesso
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
“Você 
pode 
até 
passar 
batom 
num 
porco, 
mas 
ele 
conOnuará 
sendo 
um 
porco!”
Plan 
& 
Prepare 
API 
Strategy 
Muitos 
projetos; 
Design 
Equipe 
& 
Build 
pequena 
Run 
& 
Engage 
Design 
Design 
& 
& 
Build 
Build
2 Design 
RESTful
REST 
RepresentaMonal 
State 
Transfer 
EsMlo 
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!
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": "joao.silva@empresa.com"! 
} 
PATCH /pedidos/39009186! 
{! 
"status": "Cancelado"! 
}
3 Versionamento
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 
alternaMvas: 
• 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!
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”! 
} ! 
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 
ApplicaMon 
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" 
}! 
]! 
}
Plan 
& 
Prepare 
API 
Strategy 
Design 
& 
Build 
Muitos 
projetos; 
Run 
Run 
Run 
& 
& 
& 
Engage 
Equipe 
Engage 
Engage 
pequena
7 Developers 
Portal
Docs 
incompletos, 
desatualizados, 
estáOcos 
e 
com 
PDFs 
de 
100 
páginas
Gehng 
Started 
www.twilio.com/docs!
Documentação 
InteraOva 
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áOcos 
stripe.com/docs!
REST 
Console 
ou 
Sandbox 
/ 
Playgroung 
dev.transparencia.org.br!
9 Confiabilidade
Bugs 
Confiabilidade 
Problemas 
de 
Performance 
Indisponibilidade 
Mudanças 
(não-­‐planejadas) 
Falta 
de 
Suporte
www.sensedia.com/br! 
Trace 
de 
calls, 
Monitoramento, 
Rate 
LimiOng 
e 
Alertas
status.aws.amazon.com! 
Status 
Page, 
Release 
Notes, 
Blog
Foruns 
de 
discussão 
e 
Abertura 
de 
Ockets 
desenvolvedores.extra.com.br!
10 Divulgação
Hackathon 
& 
Open 
InnovaOon
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
1 Proposta 
2 Design 
de 
Valor 
RESTful 
3 Versionamento 
4 Error 
Handling 
5 Segurança 
6 Hypermedia 
7 Developers 
8 Self-­‐Service 
9 Confiabilidade 
10 Divulgação 
Portal
www.linkedin.com/groups/API-­‐Web-­‐Services-­‐Brasil-­‐5000376 
www.meetup.com/API-­‐Craoers-­‐Brasil/
Kleber 
Bacili 
kleber.bacili@sensedia.com 
@kleberbacili 
slideshare.net/kleberbacili

More Related Content

What's hot

Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Felipe Blini
 

What's hot (9)

APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
Impacto das mega tendências io t, cloud e mobile na arquitetura das grandes e...
 
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e IonicCurso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
Curso de Desenvolvimento de Aplicativos Híbridos com PhoneGap/Cordova, e Ionic
 
Conhecendo o PhoneGap
Conhecendo o PhoneGapConhecendo o PhoneGap
Conhecendo o PhoneGap
 
Expondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travadosExpondo APIs de back-ends legados e travados
Expondo APIs de back-ends legados e travados
 
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
 
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
DevCommerce Conference 2016 - Workshop: Velocidade e confiabilidade em e-comm...
 
Desmistificando o desenvolvimento de mobile híbrido
Desmistificando o desenvolvimento de mobile híbridoDesmistificando o desenvolvimento de mobile híbrido
Desmistificando o desenvolvimento de mobile híbrido
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGap
 

Similar to 10 Atributos de uma API de Sucesso

Similar to 10 Atributos de uma API de Sucesso (20)

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
 
APIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a pontaAPIs gerenciadas de ponta a ponta
APIs gerenciadas de ponta a ponta
 
Workshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha BásicaWorkshop Hands-On APIX 2018 - Trilha Básica
Workshop Hands-On APIX 2018 - Trilha Básica
 
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
 
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
 
Code Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágilCode Igniter - O Framework php mais fácil e ágil
Code Igniter - O Framework php mais fácil e ágil
 
Design de APIs REST
Design de APIs RESTDesign de APIs REST
Design de APIs REST
 
II Oficina de Webdesign - Lecom
II Oficina de Webdesign - LecomII Oficina de Webdesign - Lecom
II Oficina de Webdesign - Lecom
 
Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHP
 
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHPPog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
Pog Nunca Mais - Técnicas e Macetes para o Desenvolvimento em PHP
 
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
 
Da argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguroDa argila ao forte: como desenvolver uma loja com PagSeguro
Da argila ao forte: como desenvolver uma loja com PagSeguro
 
Impulsionando startups com api publica
Impulsionando startups com api publicaImpulsionando startups com api publica
Impulsionando startups com api publica
 
Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!Zabbix e KACE, uma boa ideia, e porque não!
Zabbix e KACE, uma boa ideia, e porque não!
 
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)Fazendo uma aplicação cliente/servidor (e algumas dicas...)
Fazendo uma aplicação cliente/servidor (e algumas dicas...)
 
Search Engine Optimization: o que é SEO e como isso pode impactar no seu projeto
Search Engine Optimization: o que é SEO e como isso pode impactar no seu projetoSearch Engine Optimization: o que é SEO e como isso pode impactar no seu projeto
Search Engine Optimization: o que é SEO e como isso pode impactar no seu projeto
 
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
 
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias RelacionadasAula 1 - Curso de PHP/CI e Tecnologias Relacionadas
Aula 1 - Curso de PHP/CI e Tecnologias Relacionadas
 
Schema.org - HTML semântico - Front in Maceio 2012
Schema.org - HTML semântico - Front in Maceio 2012Schema.org - HTML semântico - Front in Maceio 2012
Schema.org - HTML semântico - Front in Maceio 2012
 
Empreendedorismo com Lean Startup no Startupfarm BH 2012
Empreendedorismo com Lean Startup no Startupfarm BH 2012Empreendedorismo com Lean Startup no Startupfarm BH 2012
Empreendedorismo com Lean Startup no Startupfarm BH 2012
 

Recently uploaded

Recently uploaded (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

10 Atributos de uma API de Sucesso