Kleber Bacili [email protected] @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 [email protected] @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
Inundação de dados e contexto
Implantanto e rodando em algum lugar
Source: Gartner (Jun/2012)
The Nexus of Forces
The Internet of Things
10 Atributos de uma API de sucesso
API Strategy
Plan & Prepare
Design & Build
Run & Engage
API Strategy
Plan & Prepare
Design & Build
Run & Engage
Plan & Prepare
As primeiras decisões de design…
Selecione a Tecnologia Adequada
REST SOAP vs.
Selecione a Tecnologia Adequada
JSON XML vs.
and the winners are…
REST + JSON
1 Proposta de Valor
“Você pode até passar batom num porco, mas ele conOnuará sendo um porco!”
API Strategy
Plan & Prepare
Design & Build
Run & Engage
Design &
Build
Muitos projetos; Equipe pequena
Design & 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} !
/getAccount!/getAllAccounts!/createDirectory!/updateGroupName!/findClientById!
RPC?
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": "[email protected]" !}
PATCH /pedidos/39009186 !{ ! "status": "Cancelado" !}
3 Versionamento
v1 v2 v3 v4 v5 v6 v7
THINGS CHANGE!
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 !
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 ! } !] !
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 !} !
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 !} !
200 !!!
400 !!!
500 !
Status & Error Codes
Outros Comuns
401 !!
403 !
404 !!
413 !!
429 !
Unauthorized
Forbidden
Not Found
Request is too Large
Too Many Requests
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” !} !
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" } ! ] !}
API Strategy
Plan & Prepare
Design & Build
Run & Engage Run & Engage
Muitos projetos; Equipe pequena
Run & Engage
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
Confiabilidade Bugs
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!
API Strategy
Plan & Prepare
Design & Build
Run & Engage
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
www.linkedin.com/groups/API-‐Web-‐Services-‐Brasil-‐5000376 www.meetup.com/API-‐Craoers-‐Brasil/
Kleber Bacili [email protected] @kleberbacili slideshare.net/kleberbacili