php experience 2016 - [workshop] apis bem desenhadas como base para integrações
TRANSCRIPT
![Page 1: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/1.jpg)
APIs bem desenhadas como base para integrações
![Page 2: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/2.jpg)
José VahlGerente de Tecnologia
Ciclista, fotógrafo, cervejeiro, gerente de
tecnologia e APIs addicted
[email protected]@josevahl
Petterson AndradeArquiteto de Software
Palestrante, nerd, arquiteto de software, cruzeirense e confia na
tecnologia
[email protected]@pett4j
![Page 3: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/3.jpg)
Applications Services Enabling Digital Transformation
Quick Facts
Foundedin 2007
Campinas,São Paulo,
Rio de Janeiro and
US Incorporated
Strong SOA Background(Gartner MQ SOA Gov, 2009)
+● Services & API Strategy● Architectural Solution● API Platform
![Page 4: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/4.jpg)
Agenda
Integração e evolução
Cenários de APIs
API First
Design de APIs
Mão na massa!
+
![Page 5: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/5.jpg)
O Estado Corrente das
Coisas
SOAP/XMLWS-*
Arquitetura de Serviços!Legado ++
Integração! Foco Total
Ênfase no ESB
![Page 6: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/6.jpg)
+
Arquitetura tradicional
ERPBillingCRM
ESB(serviços)
Processos
Client
Aplicações
Qu
alidad
e e Seguran
ça
Go
vernan
ça SOA
![Page 7: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/7.jpg)
+
Novos elementos, novas abordagens...
Cloud
Mobilidade
Social
Analytics
Internet of Things
Plataforma & EcossistemaMicroservice
Connector-less
![Page 8: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/8.jpg)
Custom Applications
CustomBillingERPAplicaçõesOn Premise
Cloud
![Page 9: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/9.jpg)
BillingCheckoutERP
ESB(serviços)
Processos
Cliente
Aplicações
API Gateway
Qu
alidad
e e Seguran
ça
Go
vernan
ça SOA
Cloud
![Page 10: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/10.jpg)
Mobilidade
Custom Applications
CustomBillingERPAplicaçõesOn Premise
Preocupações arquiteturais:● Segurança● Escalabilidade● Limitações de banda
![Page 11: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/11.jpg)
Social
Aplicações
Billing
CR
ME
RP
![Page 12: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/12.jpg)
Social
Aplicações
Billing
CR
ME
RP Pr
oxy
Laye
r
Monitoração
Unificação da gestão de
chaves
![Page 13: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/13.jpg)
Internet of Things
![Page 14: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/14.jpg)
Microservice #1 Microservice #2 Microservice #3 Microservice #4
Banco Relacional Banco Orientado a Documentos
Key/Store Data Base
Graph Database
HTTP HTTP HTTP HTTP
Microservice
![Page 15: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/15.jpg)
Microservice
Microservice #1 Microservice #2 Microservice #3 Microservice #4
Banco Relacional Banco Orientado a Documentos
Key/Store Data Base
Graph Database
HTTP HTTP HTTP HTTP
API Gateway
HTTP HTTP HTTP HTTP
Service aggregationRate Limiting Monitoring & AlertsAuthentication Models Policy EnforcementException handlingAnalytics on API Consumption
![Page 16: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/16.jpg)
Connector-less
Adapter Adapter
Human Capital Supply Chain
HTTP HTTP HTTP HTTP
ERP CRM
Adapter
HTTP
Enterprise Resource planning
HTTP
Enterprise Performance
![Page 17: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/17.jpg)
Connector-less
Adapter
Human Capital Supply Chain
HTTP HTTP HTTP HTTP
API Gateway
Service aggregationRate Limiting Monitoring & AlertsAuthentication Models Policy EnforcementException handlingAnalytics on API Consumption
ERP CRM
Adapter
HTTP
Enterprise Resource planning
HTTP
Enterprise Performance
HTTP
Adapter
![Page 18: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/18.jpg)
Uma avalanche de APIs
Arquitetura de Serviços!Legado ++
Ênfase no ESB
+
Formas de integração
![Page 19: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/19.jpg)
Backend
APIsThe Digital Glue
Integrações com Aplicações SaaS
Aplicações Móveis
Internet of Things
Inovação
Ecossistema de Parceiros
Digitais
![Page 20: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/20.jpg)
+
SSOCIAL
MMOBILE
AANALYTICS
CCLOUD
IoTINTERNET OF THINGS
Transformações Digitais
![Page 21: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/21.jpg)
Experiências digitais transformadas
Arquitetura de Serviços!Legado ++
+
Cenários de uso das APIs
Inovação abertaPlataformas e Ecossistemas
Clientes e Parceiros Múltiplos dispositivos
![Page 22: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/22.jpg)
+
Plataformas e Ecossistemas
Planejamento de viagens”“
![Page 23: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/23.jpg)
+
Clientes e Parceiros
Aproximação de vendedores e compradores“ ”
![Page 24: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/24.jpg)
+
Clientes e Parceiros
Aproximação de vendedores e compradores“ ”
![Page 25: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/25.jpg)
+
Múltiplos Dispositivos
Missão: Dar às pessoas acesso a todas as músicas que elas quiserem o tempo todo, de forma simples e legal.
“
”
![Page 26: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/26.jpg)
+
Inovação Aberta
Aceleradora de Startups focada em Apps para os 28M de usuários Nike
“
”
![Page 27: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/27.jpg)
![Page 28: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/28.jpg)
+
Multi-sided Business Models
Platform Power
Conceitos em comum
![Page 29: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/29.jpg)
+
The Magnet:- Design of Incentives- Pricing Models- Reputation Systems
The Matchmaker:- Rich Data Collection- Data-oriented Match- Curation (the best and the rest)
Gravity
Flow
ConnectionThe Toolbox:- Simple- Open- Agile
![Page 30: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/30.jpg)
+ API First
![Page 31: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/31.jpg)
78%
![Page 32: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/32.jpg)
+
Compromisso com APIs
“Anyone who doesn’t do this will be fired. Thank you; have a nice day!”- Jeff Bezos
![Page 33: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/33.jpg)
+
Foco na informação ou na integração?
● Serviços projetados para uso interno
● Código Legado● SOAP Services● Tabelas de Banco
API(design problemático)
Foco na informação
Foco na integração
info:
vers
ion: 0
.0.1
titl
e: My
API História para contar
![Page 34: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/34.jpg)
+
Design despriorizado + Visão de curto prazo
Com “APIs”
![Page 35: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/35.jpg)
+ Design de APIs inf
o:
vers
ion: 0
.0.1
titl
e: My
API
![Page 36: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/36.jpg)
![Page 37: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/37.jpg)
1966
Clint EastwoodLee Van CleefEli Wallach
Sergio Leone(Por um punhado de dólares e Por uns dólares a mais)
![Page 38: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/38.jpg)
RESTSOAP vs.
JSONXML vs.
Valor RESTful Documentação StatusCodes
Otimização Hypermedia Segurança Instrum/zação
As primeiras decisões…
![Page 39: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/39.jpg)
JSONREST +
And the winners are...
![Page 40: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/40.jpg)
Muito confusa?Valor
Não “pegou”
http://www.infoq.com/news/2015/11/dropbox-deprecates-apis
![Page 41: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/41.jpg)
778 Pokémon
248 Habilidades
?Valor
![Page 42: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/42.jpg)
778 Pokémon
248 Habilidades
?+55k calls / dia
Valor
![Page 43: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/43.jpg)
“Você pode até passar batom num porco,mas ele continuará sendo um porco!”
Foco no consumidor!
![Page 44: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/44.jpg)
RESTful
![Page 45: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/45.jpg)
RESTRepresentational State TransferEstilo arquitetural criado por Roy Fielding
RESTful Design que respeita os conceitos REST
![Page 46: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/46.jpg)
Coleção/pedidos
Resources
Elemento/pedidos/{id}
![Page 47: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/47.jpg)
/getAccount/getAllAccounts/createDirectory/updateGroupName/findClientById
RPC?
![Page 48: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/48.jpg)
URI: https://api.mycompany.com/name-of-api/resource
HTTP ou HTTPS
Seu domínio Nome da API(opcional)
Recursos eParâmetros
RESTful
![Page 49: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/49.jpg)
GET POST PUT DELETE
![Page 50: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/50.jpg)
Resource POST(create)
GET(read)
PUT(update, create)
DELETE(delete)
/pedidos Cria novo pedido
Lista pedidos -- Apaga todos os pedidos
/pedidos/3747 -- Mostra pedido 3747
Atualiza pedido 3747, se não existir, cria
Apaga pedido 3747
RESTful
![Page 51: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/51.jpg)
Método de Consulta(Cachable, Safe, Idempotente)
GET /vendas/pedidos
GET /checklist/item/4
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
![Page 52: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/52.jpg)
Método para “Criação”(Unsafe, Não-Idempotente)
POST /clientes/98W33GJ201/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
OPTIONS
HEAD
![Page 53: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/53.jpg)
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para “Atualização”(Unsafe, Idempotente)
PUT /clientes/98W33GJ201/enderecos/1{ "endereco": "Av. Brigadeiro Faria Lima", "numero": "3800", "complemento": "18o. Andar", "bairro": "Itaim Bibi", "cidade": "São Paulo", "estado": "SP", "cep": "04538-132"}
![Page 54: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/54.jpg)
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para Remoção(Unsafe, Idempotente)
DELETE /pedidos/98W33GJ201
DELETE /users/98S7726QV1/photos
![Page 55: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/55.jpg)
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para Atualização parcial(Unsafe, Não-Idempotente)
PATCH /users/98W33GJ201{ "email": "[email protected]"}
PATCH /pedidos/39D0091B86{ "status": "Cancelado"}
![Page 56: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/56.jpg)
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
OPTIONSQuais métodos são permitidos?
OPTIONS /clientesAllow: HEAD,GET,POST,OPTIONS
HEADQuero ver apenas o Header
HEAD /clientesDate: …Content-Type: application/jsonContent-Length: 12345
![Page 57: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/57.jpg)
![Page 58: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/58.jpg)
Documentação
![Page 59: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/59.jpg)
DocumentaçãoTHINGS CHANGE!
v1
v2v3
v4
![Page 60: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/60.jpg)
Documentação
Versão
URI: https://api.mycompany.com/name-of-api/v2/resource
HTTP ou HTTPS
Seu domínio Nome da API(opcional)
Recursos eParâmetros
Outras alternativas:• Twilio: /2010-04-01/Accounts/ • Salesforce.com: /services/data/v20.0/limits
VersionamentoNunca quebre o cliente!!
![Page 61: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/61.jpg)
UX
(Developer Experience)
DX
![Page 62: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/62.jpg)
API Portal
Developers
https://developers.[you].com
Powered by
❖ Introdução, tutoriais e exemplos de códigos
❖ Self-service Signup
❖ Documentação interativa (API Browsing)
❖ Forum, Blog & Dev support
❖ Testes facilitados (Sandbox)
❖ Dev. Dashboard
API Developers PortalDocumentação
![Page 63: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/63.jpg)
Documentação Interativa
desenvolvedores.cnova.com
![Page 64: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/64.jpg)
Getting Started
www.twilio.com/api
![Page 65: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/65.jpg)
Exemplos de código na linguagem
do developer
sendgrid.com/docs
![Page 66: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/66.jpg)
Sign-up e Tokens de acesso automáticos
stripe.com/docs
![Page 67: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/67.jpg)
REST Console ou Sandbox / Playgroung
dev.transparencia.org.br
![Page 68: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/68.jpg)
![Page 69: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/69.jpg)
Hackathon & Open Innovation
![Page 70: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/70.jpg)
Status Codes
200
400
500
Resultado OK
Erro no Cliente
Erro no Servidor
201 Criado
202 Aceito
401 Não Autorizado405 Operação não permitida413 Request muito grande429 Muitas requisições
503 Servidor não disponível
204 Sem Conteúdo
![Page 71: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/71.jpg)
STATUS OK 200
![Page 72: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/72.jpg)
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 }]
![Page 73: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/73.jpg)
200
400
500
Status & Error Codes
201 Created
POST /items/1234/bids { "amount" : 602.99 }
201 CreatedLocation: /items/1234/bids/100001 { "amount" : 602.99, "current_bid" : 510, "winning" : true}
![Page 74: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/74.jpg)
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}
![Page 75: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/75.jpg)
200
400
500
Status & Error Codes
Outros Comuns
401
403
404
413
429
Unauthorized
Forbidden
Not Found
Request is too Large
Too Many Requests
![Page 76: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/76.jpg)
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”}
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
![Page 77: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/77.jpg)
Otimização
Filtros e paginação
Callbacks
Caching
![Page 78: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/78.jpg)
FiltrosGET /vendas/v2/pedidos?status=concluido
GET /pedidos/123AF15J?_fields=numero,data,valor
Busca com escopo (subconjuntos):
Respostas parciais:
GET /search?q=macbook+air
Busca Global:
![Page 79: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/79.jpg)
Paginação
GET /pedidos?_offset=50&_limit=25
Recomendação:
Outras opções:
Linkedin:
Instagram:
?start=50&count=25
?min_id=3091&max_id=3245&count=25
![Page 80: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/80.jpg)
CachingEvite tráfego desnecessário
Latência de rede
Sobrecarga nos servidores
Atenção
❖ Tempo de invalidação do cache❖ Sincronização em clusters
![Page 81: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/81.jpg)
Já chegamos?Já chegamos?
Já chegamos?Já chegamos?
Já chegamos?
Stop Pooling Me
![Page 82: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/82.jpg)
Marketplace API
❖ Consulta estoque
❖ Cálculo de frete
❖ Novo pedido recebido
https://api.mywebstore.com/v1/estoque
https://api.mywebstore.com/v1/frete
https://api.mywebstore.com/v1/pedido
Chamadas Reversas:
![Page 83: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/83.jpg)
Hypermedia
*POX = Plain Old XML, Richardson Maturity Model
HATEOAS = Hypermedia as the Engine of Application State
http://martinfowler.com/articles/richardsonMaturityModel.html
![Page 84: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/84.jpg)
GET /items?q=macbook+air+new { "results" : [ { "id" : 123, "name" : "Macbook Air 2010 LIKE NEW", "price" : "499" } ]}
SEMHypermedia
![Page 85: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/85.jpg)
COMHypermedia
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" } ]}
![Page 86: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/86.jpg)
Segurança
❖ Acesso não autorizado
❖ Ataques
❖ Sobrecarga
❖ Confidencialidade
❖ Implementações desastradas em clients
![Page 87: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/87.jpg)
Acesso não autorizado Segurança baseada na obscuridade
A prova de hackers Canal inseguro (hijacking)
![Page 88: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/88.jpg)
Níveis de CRITICIDADE
![Page 89: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/89.jpg)
Básico
Intermediário
Crítico❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a informações sensíveis?
❖ As APIs alteram dados importantes?
![Page 90: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/90.jpg)
Básico
Intermediário
Crítico
❖ Quanto você conhece dos Client Apps?
❖ As APIs dão acesso a informações sensíveis?
❖ As APIs alteram dados importantes?
API totalmente pública, potencialmente centenas de
Apps externos
Alguns Apps externos de parceiros bem conhecidos
Somente Apps desenvolvidos pela própria empresa
![Page 91: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/91.jpg)
Básico
Intermediário
CríticoRegistros médicos, transações financeiras ou dados vitais ao
negócio
Informações sociais,Internet das coisas
Informações acessórias não relacionadas a usuários
❖ Quanto você conhece dos Client Apps?
❖ As APIs dão acesso a informações sensíveis?
❖ As APIs alteram dados importantes?
![Page 92: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/92.jpg)
Básico
Intermediário
CríticoTodas as operações (inclusive
DELETEs) em elementos e coleções de recursos
GETs e alguns POSTs e PUTs em recursos não vitais
Somente GETs
❖ Quanto você conhece dos Client Apps?
❖ As APIs dão acesso a informações sensíveis?
❖ As APIs alteram dados importantes?
![Page 93: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/93.jpg)
Separation ofCONCERNS
Web APIFAÇAD
E
![Page 94: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/94.jpg)
Segurança❖ Agrupamento de elementos com
responsabilidades semelhantes
❖ Simplificação de regras de negócio
Separation ofCONCERNS Autenticação
Autorização
Privacidade
Disponibilidade
Auditoria
Integridade
![Page 95: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/95.jpg)
APIs
Web API
FAÇADEUsers Apps
Partners/Developers
Your Backend
![Page 96: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/96.jpg)
Users Apps
APIs
AutenticaçãoAutorizaçãoDisponibilidadePrivacidadeAuditoriaIntegridade
API Gateway
Partners/Developers
Your Backend
Web API
FAÇADE
![Page 97: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/97.jpg)
Autenticação /Autorização
Privacidade
Integridade Disponibilidade
Auditoria
❖ Acesso não autorizado❖ Ataque Força Bruta❖ Roubo de Credenciais❖ Session hijacking
❖ DDoS ❖ Buffer Overflow❖ Injection (SQL, XML, JSON)
❖ Information Disclosure ❖ Man-in-the-middle e
Network Eavesdropping❖ Data Scraping
❖ Injection (SQL, XML, JSON)❖ Cross-site Scripting (XSS) e
Request Forgery (XSRF)
❖ Repudiação❖ Compliance (PCI-DSS, HIPAA)
![Page 98: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/98.jpg)
App Token Basic HTTP OAuth 2.0 OpenID
http://downloads.sensedia.com/webinar-seguranca-de-apis
![Page 99: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/99.jpg)
Instrum/zação
Eat your ownDog Food
![Page 100: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/100.jpg)
Trace de calls,Monitoramento,Rate Limiting e
Alertas
Compreenda o padrão de uso
das APPs e APIs
![Page 101: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/101.jpg)
status.aws.amazon.com
Status Page, Release Notes,
Blog
![Page 102: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/102.jpg)
Foruns de discussão e Abertura de tickets
desenvolvedores.catho.com.br
![Page 103: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/103.jpg)
![Page 104: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/104.jpg)
Instrum/zação
![Page 105: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/105.jpg)
![Page 106: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/106.jpg)
REST + PHP
![Page 107: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/107.jpg)
+Rest + PHP
![Page 108: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/108.jpg)
+Silex
- Está entre os mais rápidos micro frameworks de REST PHP
- Baseado nos componentes Symphony
- Boa documentação e bom suporte da comunidade.
![Page 109: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/109.jpg)
+Slim
- Está entre os mais rápidos micro frameworks de REST PHP
- Boa documentação
- Integrado com implementações de terceiros
![Page 110: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/110.jpg)
+Lumen
- Baseado no Laravel
- Boa documentação
- Não tão rápido quanto o Slim ou Silex
![Page 111: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/111.jpg)
+Phalcon
- O mais rápido dos frameworks REST PHP
- Extremamente otimizado e modular
- Não tão rápido quanto o Slim ou Silex
- Boa documentação
![Page 112: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/112.jpg)
Api na prática
![Page 113: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/113.jpg)
Backend
APIsThe Digital Glue
Integrações com Aplicações SaaS
Aplicações Móveis
Internet of Things
Aplicações Web
Ecossistema de Parceiros
Digitais
![Page 114: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/114.jpg)
+A mudança
Belo Horizonte Campinas
![Page 115: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/115.jpg)
+Visão de negócio
- Hub mudanças- Juntar as duas pontas:
- Clientes- Transportadoras- Compartilhar mudanças / cargas
![Page 116: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/116.jpg)
- Economia compartilhada- Legislação- Mercado estabelecido- Barreira de entrada: Base de usuários
+Oportunidades e Desafios
![Page 117: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/117.jpg)
- API como estratégia fundamental- Api com foco no cliente: Clientes
acessando apps- Api com foco no parceiro: Transportadoras
e donos de caminhões- Múltiplos dispositivos
+Estratégia de API First
![Page 118: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/118.jpg)
Code!
![Page 119: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/119.jpg)
Swagger
+Swagger
![Page 120: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/120.jpg)
+Geração de Sdk/Client
![Page 121: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/121.jpg)
+Geração do API Front
![Page 122: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/122.jpg)
+Postman
![Page 123: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/123.jpg)
+Mock / Server
![Page 124: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/124.jpg)
+Carregar Swagger no API Suite
![Page 125: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/125.jpg)
+Ionic
![Page 126: PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações](https://reader033.vdocuments.mx/reader033/viewer/2022042706/58a068a61a28ab06528b55ef/html5/thumbnails/126.jpg)
+Take Away
A integração do seu sistema deve ser pensada a partir do dia zero!
APIs estão nas agendas e no dia a dia
Quanto mais você investir no desenho das
APIs, mais atalhos poderá pegar no futuro