Kleber 
Bacili 
kleber.bacili@sensedia.com 
@kleberbacili 
slideshare.net/kleberbacili 
10 
atributos 
de 
uma 
API 
de 
s...
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, 
R...
O 
Tempo 
todo 
com 
o 
usuário 
ComparMlhando 
tudo 
com 
todos 
The 
Nexus 
of 
Forces 
Inundação 
de 
dados 
e 
context...
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 
& 
...
2 Design 
RESTful
REST 
RepresentaMonal 
State 
Transfer 
EsMlo 
arquitetural 
criado 
por 
Roy 
Fielding 
RESTful 
Design 
que 
respeita 
o...
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": "3...
GET! 
POST! 
PUT! 
DELETE! 
PATCH! 
Método 
para 
“Atualização” 
PUT /clientes/98W3G32K01/enderecos/1! 
{! 
"endereco": "A...
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.si...
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 
...
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": "153...
Status 
& 
Error 
Codes 
200!!! 
400!!! 
500! 
201 
Created 
POST /items/1234/bids ! 
{! 
"amount" : 602.99 ! 
} 
201 Crea...
Status 
& 
Error 
Codes 
200!!! 
400!!! 
500! 
400 
Bad 
Request 
GET /candidatos! 
400 Bad Request! 
{! 
"status" : 400,!...
Status 
& 
Error 
Codes 
200!!! 
400!!! 
500! 
Outros 
Comuns 
401! 
! 
403! 
404! 
! 
413! 
! 
429! 
Unauthorized 
Forbid...
Status 
& 
Error 
Codes 
200!!! 
400!!! 
500! 
500 
Internal 
Server 
Error 
PUT /vendas/v1/pedidos/9940382! 
{! 
”status"...
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 
App...
GET /items?q=macbook+air+new 
{! 
"results" : [ ! 
{! 
"id" : 123,! 
"name" : "Macbook Air 2010 LIKE NEW", ! 
"price" : "4...
COM 
Hypermedia 
GET /items?q=macbook+air+new 
{! 
"results" : [ ! 
{ 
"_links" : [! 
{"rel": "self","uri": "/items/123" }...
Plan 
& 
Prepare 
API 
Strategy 
Design 
& 
Build 
Muitos 
projetos; 
Run 
Run 
Run 
& 
& 
& 
Engage 
Equipe 
Engage 
Enga...
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 
transpare...
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 S...
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
10 Atributos de uma API de Sucesso
10 Atributos de uma API de Sucesso
10 Atributos de uma API de Sucesso
10 Atributos de uma API de Sucesso
Próximos SlideShares
Carregando em…5
×

10 Atributos de uma API de Sucesso

943 visualizações

Publicada em

Apresentação realizada no QCon Rio, dia 25/Setembro/2014.

#QConRio #APIs #Sensedia

Descrição:

Impulsionadas pelo aumento da mobilidade, cloud, mídias sociais e internet das coisas, as APIs estão realmente entrando no dia-a-dia das equipes de desenvolvimento – seja de startups que estão começando a desenvolver seus produtos; seja de grandes empresas, que carregam um grande legado de sistemas e investimentos realizados em middlewares de integração.

Diversas razões podem levar uma empresa ou desenvolvedor a expor APIs. Mas seja qual for o motivo, alguns cuidados são imprescindíveis para que tragam os resultados esperados. Entretanto, muitas implementações de APIs RESTful não têm levado em consideração princípios básicos de design.

Nessa palestra apresentamos atributos de APIs de sucesso, incluindo a proposição de valor de uma API e o entendimento do público-alvo, assim como o design RESTful de resources (URIs, verbos, filtros e paginação). Também são explorados modelos de segurança e o padrão OAuth 2.0; versionamento e formas de documentação; caching de requisições; hipermídia e callbacks; padronização de erros e status codes; controles e medidas recomendadas; além do "onboarding", que inclui divulgação e formas de engajamento.

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
943
No SlideShare
0
A partir de incorporações
0
Número de incorporações
159
Ações
Compartilhamentos
0
Downloads
16
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

10 Atributos de uma API de Sucesso

  1. 1. 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
  2. 2. Kleber Bacili kleber.bacili@sensedia.com @kleberbacili Cerquilho
  3. 3. Agenda Contextualização Planejamento e Preparação Design e Construção Execução e Engajamento
  4. 4. Contextualização
  5. 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 (*) Magic Quadrant for Integrated SOA Governance Technology Sets, 2009
  6. 6. 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)
  7. 7. The Internet of Things
  8. 8. 10 Atributos de uma API de sucesso
  9. 9. Plan & Prepare API Strategy Design & Build Run & Engage
  10. 10. Plan & Prepare API Strategy Design & Build Run & Engage Plan Prepare
  11. 11. As primeiras decisões de design…
  12. 12. Selecione a Tecnologia Adequada SOAP vs. REST
  13. 13. Selecione a Tecnologia Adequada XML vs. JSON
  14. 14. and the winners are… REST + JSON
  15. 15. 1 Proposta de Valor
  16. 16. “Você pode até passar batom num porco, mas ele conOnuará sendo um porco!”
  17. 17. Plan & Prepare API Strategy Muitos projetos; Design Equipe & Build pequena Run & Engage Design Design & & Build Build
  18. 18. 2 Design RESTful
  19. 19. REST RepresentaMonal State Transfer EsMlo arquitetural criado por Roy Fielding RESTful Design que respeita os conceitos REST
  20. 20. Coleção /pedidos! Resources Elemento /pedidos/{id}!
  21. 21. RPC? /getAccount! /getAllAccounts! /createDirectory! /updateGroupName! /findClientById!
  22. 22. GET POST PUT DELETE
  23. 23. Método de Consulta GET /vendas/pedidos! GET /checklist/item/4! GET! POST! PUT! DELETE! PATCH!
  24. 24. 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!
  25. 25. 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"! }
  26. 26. GET! POST! PUT! DELETE! PATCH! Método para “Remoção” DELETE /pedidos/{id}! DELETE /users/98W3G32K01/photos!
  27. 27. GET! POST! PUT! DELETE! PATCH! Método para “Atualização parcial” PATCH /users/98W3G32K01 ! {! "email": "joao.silva@empresa.com"! } PATCH /pedidos/39009186! {! "status": "Cancelado"! }
  28. 28. 3 Versionamento
  29. 29. THINGS CHANGE! v1 v2 v3 v4 v5 v6 v7
  30. 30. 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
  31. 31. 4 Error Handling
  32. 32. 200! 400! 500! Resultado OK Erro no Client Erro no Server
  33. 33. STATUS OK 200!
  34. 34. 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! }! ]!
  35. 35. 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! } !
  36. 36. 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! }!
  37. 37. Status & Error Codes 200!!! 400!!! 500! Outros Comuns 401! ! 403! 404! ! 413! ! 429! Unauthorized Forbidden Not Found Request is too Large Too Many Requests
  38. 38. 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
  39. 39. Mais informações? Vídeo do Webinar hdp://downloads.sensedia.com/webinar-­‐design-­‐de-­‐apis-­‐resful
  40. 40. 5 Segurança
  41. 41. v Acesso não autorizado v Ataques v Sobrecarga v Confidencialidade v Implementações desastradas de clients
  42. 42. v Acesso não autorizado v Ataques v Sobrecarga v Confidencialidade v Implementações desastradas de clients
  43. 43. þ Identificar App (?) þ Identificar Usuário (?) þ Identificar Device (?) Identidade e Autorização
  44. 44. HTTPS, sempre!
  45. 45. 6 Hypermedia
  46. 46. Hypermedia APIs *POX = Plain Old XML, Richardson Maturity Model HATEOAS = Hypermedia as the Engine of ApplicaMon State
  47. 47. GET /items?q=macbook+air+new {! "results" : [ ! {! "id" : 123,! "name" : "Macbook Air 2010 LIKE NEW", ! "price" : "499" ! }! ]! } SEM Hypermedia
  48. 48. 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" }! ]! }
  49. 49. Plan & Prepare API Strategy Design & Build Muitos projetos; Run Run Run & & & Engage Equipe Engage Engage pequena
  50. 50. 7 Developers Portal
  51. 51. Docs incompletos, desatualizados, estáOcos e com PDFs de 100 páginas
  52. 52. Gehng Started www.twilio.com/docs!
  53. 53. Documentação InteraOva desenvolvedores.extra.com.br!
  54. 54. Exemplos de código na linguagem do developer sendgrid.com/docs!
  55. 55. 8 Self-­‐Service
  56. 56. Sign-­‐up e Tokens de acesso automáOcos stripe.com/docs!
  57. 57. REST Console ou Sandbox / Playgroung dev.transparencia.org.br!
  58. 58. 9 Confiabilidade
  59. 59. Bugs Confiabilidade Problemas de Performance Indisponibilidade Mudanças (não-­‐planejadas) Falta de Suporte
  60. 60. www.sensedia.com/br! Trace de calls, Monitoramento, Rate LimiOng e Alertas
  61. 61. status.aws.amazon.com! Status Page, Release Notes, Blog
  62. 62. Foruns de discussão e Abertura de Ockets desenvolvedores.extra.com.br!
  63. 63. 10 Divulgação
  64. 64. Hackathon & Open InnovaOon
  65. 65. 1 Apps criadas: 300+ 2 Developers cadastrados: 800+ 3 Tráfego: 20M calls / 15 dias 4 Eleições mais transparentes!
  66. 66. Plan & Prepare API Strategy Design & Build Run & Engage
  67. 67. 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
  68. 68. www.linkedin.com/groups/API-­‐Web-­‐Services-­‐Brasil-­‐5000376 www.meetup.com/API-­‐Craoers-­‐Brasil/
  69. 69. Kleber Bacili kleber.bacili@sensedia.com @kleberbacili slideshare.net/kleberbacili

×