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 slideshare.net/kleberbacili
Cerquilho Kleber Bacili kleber.bacili@sensedia.com @kleberbacili
Contextualização Planejamento e Preparação Agenda 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
ComparMlhando tudo com todos O Tempo todo com o usuário 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 Run & Engage Design & Build
Plan & Prepare API Strategy Run & Engage Design & Build
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 Run & Engage Muitos projetos; Design & & Equipe & Build pequena
2 Design RESTful
REST RepresentaMonal State Transfer EsMlo arquitetural criado por Roy Fielding RESTful Design que respeita os conceitos REST
Coleção Resources /pedidos! Elemento /pedidos/{id}!
RPC? /getaccount! /getallaccounts! /createdirectory! /updategroupname! /findclientbyid!
GET POST PUT DELETE
GET! POST! PUT! DELETE! Método de Consulta GET /vendas/pedidos! GET /checklist/item/4! PATCH!
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! 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! Método para Remoção DELETE /pedidos/{id}! DELETE /users/98w3g32k01/photos! PATCH!
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! 401!! 403! 404!! 413!! 429! Outros Comuns 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
Identidade e Autorização þ Identificar App (?) þ Identificar Usuário (?) þ Identificar Device (?)
HTTPS, sempre!
6 Hypermedia
Hypermedia APIs HATEOAS = Hypermedia as the Engine of ApplicaMon State *POX = Plain Old XML, Richardson Maturity Model
SEM Hypermedia GET /items?q=macbook+air+new {! "results" : [! {! "id" : 123,! "name" : "Macbook Air 2010 LIKE NEW",! "price" : "499"! }! ]! }
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 Muitos projetos; Run & Engage Equipe pequena Design & Build
7 Developers Portal
Docs incompletos, desatualizados, estáocos e com PDFs de 100 páginas
Gehng Started www.twilio.com/docs!
desenvolvedores.extra.com.br! Documentação InteraOva
sendgrid.com/docs! Exemplos de código na linguagem do developer
8 Self- Service
stripe.com/docs! Sign- up e Tokens de acesso automáocos
REST Console ou Sandbox / Playgroung dev.transparencia.org.br!
9 Confiabilidade
Indisponibilidade Problemas de Performance Mudanças (não- planejadas) Bugs Confiabilidade Falta de Suporte
www.sensedia.com/br! Trace de calls, Monitoramento, Rate LimiOng e Alertas
status.aws.amazon.com! Status Page, Release Notes, Blog
desenvolvedores.extra.com.br! Foruns de discussão e Abertura de Ockets
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 Run & Engage Design & Build
1 Proposta de Valor 6 Hypermedia 2 Design RESTful 7 Developers Portal 3 Versionamento 8 Self- Service 4 Error Handling 9 Confiabilidade 5 Segurança 10 Divulgação
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