Campus Party 2015: Os 10 Atributos de uma API de Sucesso
-
Upload
kleber-bacili -
Category
Technology
-
view
188 -
download
2
Transcript of Campus Party 2015: Os 10 Atributos de uma API de Sucesso
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
ComparKlhando tudo com todos
Inundação de dados e contexto
Implantanto e rodando em algum lugar
Source: Gartner (Jun/2012)
The Nexus of Forces
API Strategy
Plan & Prepare
Design & Build
Run & Engage
Design &
Build
Muitos projetos; Equipe pequena
Design & Build
REST RepresentaKonal State Transfer EsKlo arquitetural criado por Roy Fielding
RESTful Design que respeita os conceitos REST
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" !}
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 alternaKvas: • Twilio: /2010-‐04-‐01/Accounts/ • Salesforce.com: /services/data/v20.0/sobjects/Account
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
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
Hypermedia APIs
*POX = Plain Old XML, Richardson Maturity Model
HATEOAS = Hypermedia as the Engine of ApplicaKon 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
Confiabilidade Bugs
Problemas de Performance
Indisponibilidade
Mudanças (não-‐planejadas)
Falta de Suporte
1 Apps criadas: 300+
2 Developers cadastrados: 800+
3 Tráfego: 20M calls / 15 dias
4 Eleições mais transparentes! (ou não)
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
10 atributos de uma API de sucesso
www.slideshare.net/kleberbacili/