Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
APIs bem desenhadas como
base para integrações
José Vahl
Gerente de Tecnologia
Ciclista, fotógrafo,
cervejeiro, gerente de
tecnologia e APIs addicted
jose.vahl@sensedia....
Applications Services
Enabling Digital Transformation
Quick Facts
Founded
in 2007
Campinas,
São Paulo,
Rio de Janeiro
and
...
Agenda
Integração e evolução
Cenários de APIs
API First
Design de APIs
Mão na massa!
+
O Estado
Corrente das
Coisas
SOAP/XML
WS-*
Arquitetura de Serviços!
Legado ++
Integração!
Foco Total
Ênfase no
ESB
+
Arquitetura tradicional
ERPBillingCRM
ESB
(serviços)
Processos
Client
Aplicações
QualidadeeSegurança
GovernançaSOA
+
Novos elementos, novas abordagens...
Cloud
Mobilidade
Social
Analytics
Internet of
Things
Plataforma &
Ecossistema
Micro...
Custom
Applications
CustomBillingERP
Aplicações
On Premise
Cloud
BillingCheckoutERP
ESB
(serviços)
Processos
Cliente
Aplicações
API
Gateway
QualidadeeSegurança
GovernançaSOA
Cloud
Mobilidade
Custom
Applications
CustomBillingERP
Aplicações
On Premise
Preocupações arquiteturais:
● Segurança
● Escalabili...
Social
Aplicações
BillingCRMERP
Social
Aplicações
BillingCRMERP
ProxyLayer
Monitoração
Unificação
da gestão de
chaves
Internet
of Things
Microservice #1 Microservice #2 Microservice #3 Microservice #4
Banco Relacional Banco Orientado
a Documentos
Key/Store Da...
Microservice
Microservice #1 Microservice #2 Microservice #3 Microservice #4
Banco Relacional Banco Orientado
a Documentos...
Connector-
less
Adapter Adapter
Human Capital Supply Chain
HTTP HTTP HTTP HTTP
ERP CRM
Adapter
HTTP
Enterprise Resource
pl...
Connector-
less
Adapter
Human Capital Supply Chain
HTTP HTTP HTTP HTTP
API Gateway
Service aggregation
Rate Limiting
Monit...
Uma avalanche de APIs
Arquitetura de Serviços!
Legado ++
Ênfase no
ESB
+
Formas de integração
Backend
APIs
The Digital Glue
Integrações com
Aplicações SaaS
Aplicações
Móveis
Internet
of Things
Inovação
Ecossistema
de...
+
SSOCIAL
MMOBILE
AANALYTICS
CCLOUD
IoTINTERNET
OF THINGS
Transformações Digitais
Experiências digitais transformadas
Arquitetura de Serviços!
Legado ++
+
Cenários de uso das APIs
Inovação abertaPlataform...
+
Plataformas e Ecossistemas
Planejamento de viagens”“
+
Clientes e Parceiros
Aproximação de
vendedores e compradores
“ ”
+
Clientes e Parceiros
Aproximação de
vendedores e compradores
“ ”
+
Múltiplos Dispositivos
Missão: Dar às pessoas
acesso a todas as músicas
que elas quiserem o tempo
todo, de forma simples...
+
Inovação Aberta
Aceleradora de Startups
focada em Apps para os
28M de usuários Nike
“
”
+
Multi-sided
Business Models
Platform
Power
Conceitos em comum
+
The Magnet:
- Design of Incentives
- Pricing Models
- Reputation Systems
The Matchmaker:
- Rich Data Collection
- Data-o...
+ API First
78%
+
Compromisso com APIs
“Anyone who doesn’t do this will be fired. Thank you; have a nice day!”
- Jeff Bezos
+
Foco na informação ou na integração?
● Serviços projetados para
uso interno
● Código Legado
● SOAP Services
● Tabelas de...
+
Design despriorizado +
Visão de curto prazo
Com “APIs”
+
Design de
APIs info:
version: 0.0.1
title: My API
1966
Clint Eastwood
Lee Van Cleef
Eli Wallach
Sergio Leone
(Por um punhado de dólares e Por uns dólares a mais)
RESTSOAP vs.
JSONXML vs.
Valor RESTful Documentação Status
Codes
Otimização Hypermedia Segurança Instrum/zação
As primeira...
JSONREST +
And the winners are...
Muito confusa
?
Valor
Não “pegou”
http://www.infoq.com/news/2015/11/dropbox-deprecates-apis
778 Pokémon
248 Habilidades
?
Valor
778 Pokémon
248 Habilidades
?+55k calls / dia
Valor
“Você pode até passar batom num porco,
mas ele continuará sendo um porco!”
Foco no consumidor!
RESTful
REST
Representational State Transfer
Estilo arquitetural criado por Roy Fielding
RESTful
Design que respeita os conceitos ...
Coleção
/pedidos
Resources
Elemento
/pedidos/{id}
/getAccount
/getAllAccounts
/createDirectory
/updateGroupName
/findClientById
RPC?
URI: https://api.mycompany.com/name-of-api/resource
HTTP ou
HTTPS
Seu domínio Nome da API
(opcional)
Recursos e
Parâmetros...
GET POST PUT DELETE
Resource POST
(create)
GET
(read)
PUT
(update, create)
DELETE
(delete)
/pedidos Cria novo
pedido
Lista pedidos -- Apaga to...
Método de Consulta
(Cachable, Safe, Idempotente)
GET /vendas/pedidos
GET /checklist/item/4
GET
POST
PUT
DELETE
PATCH
OPTIO...
Método para “Criação”
(Unsafe, Não-Idempotente)
POST /clientes/98W33GJ201/enderecos
{
"endereco": "Av. Brigadeiro Faria Li...
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para “Atualização”
(Unsafe, Idempotente)
PUT /clientes/98W33GJ201/enderecos/...
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para Remoção
(Unsafe, Idempotente)
DELETE /pedidos/98W33GJ201
DELETE /users/...
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
Método para Atualização parcial
(Unsafe, Não-Idempotente)
PATCH /users/98W33GJ201
{...
GET
POST
PUT
DELETE
PATCH
OPTIONS
HEAD
OPTIONS
Quais métodos são permitidos?
OPTIONS /clientes
Allow: HEAD,GET,POST,OPTION...
Documentação
DocumentaçãoTHINGS
CHANGE!
v1
v2
v3
v4
Documentação
Versão
URI: https://api.mycompany.com/name-of-api/v2/resource
HTTP ou
HTTPS
Seu domínio Nome da API
(opcional...
UX
(Developer Experience)
DX
API Portal
Developers
https://developers.[you].com
Powered by
❖ Introdução, tutoriais e
exemplos de códigos
❖ Self-service...
Documentação
Interativa
desenvolvedores.cnova.com
Getting
Started
www.twilio.com/api
Exemplos de
código na
linguagem
do developer
sendgrid.com/docs
Sign-up e Tokens
de acesso
automáticos
stripe.com/docs
REST Console ou
Sandbox / Playgroung
dev.transparencia.org.br
Hackathon & Open Innovation
Status Codes
200
400
500
Resultado OK
Erro no Cliente
Erro no Servidor
201 Criado
202 Aceito
401 Não Autorizado
405 Operaç...
STATUS OK 200
200
400
500
Status &
Error Codes
200 OK
GET /candidatos?estado=SP&partido=PP
200 OK
[
{
"id": "1532962",
"apelido": "PAULO...
200
400
500
Status &
Error Codes
201 Created
POST /items/1234/bids
{
"amount" : 602.99
}
201 Created
Location: /items/1234...
200
400
500
Status &
Error Codes
400 Bad Request
GET /candidatos
400 Bad Request
{
"status" : 400,
"code" : 40377,
"messag...
200
400
500
Status &
Error Codes
Outros Comuns
401
403
404
413
429
Unauthorized
Forbidden
Not Found
Request is too Large
T...
200
400
500
Status &
Error Codes
500 Internal Server Error
PUT /vendas/v1/pedidos/9940382
{
”status" : canceled
}
500 Inte...
Otimização
Filtros e
paginação
Callbacks
Caching
FiltrosGET /vendas/v2/pedidos?status=concluido
GET /pedidos/123AF15J?_fields=numero,data,valor
Busca com escopo (subconjun...
Paginação
GET /pedidos?_offset=50&_limit=25
Recomendação:
Outras opções:
Linkedin:
Instagram:
?start=50&count=25
?min_id=3...
Caching
Evite tráfego desnecessário
Latência de rede
Sobrecarga nos servidores
Atenção
❖ Tempo de invalidação do cache
❖ S...
Já chegamos?
Já chegamos?
Já chegamos?
Já chegamos?
Já chegamos?
Stop Pooling Me
Marketplace API
❖ Consulta estoque
❖ Cálculo de frete
❖ Novo pedido recebido
https://api.mywebstore.com/v1/estoque
https:/...
Hypermedia
*POX = Plain Old XML, Richardson Maturity Model
HATEOAS = Hypermedia as the
Engine of Application State
http://...
GET /items?q=macbook+air+new
{
"results" : [
{
"id" : 123,
"name" : "Macbook Air 2010 LIKE NEW",
"price" : "499"
}
]
}
SEM...
COM
Hypermedia
GET /items?q=macbook+air+new
{
"results" : [
{
"_links" : [
{"rel": "self","uri": "/items/123" },
{"rel": "...
Segurança
❖ Acesso não autorizado
❖ Ataques
❖ Sobrecarga
❖ Confidencialidade
❖ Implementações
desastradas em clients
Acesso não autorizado Segurança baseada na obscuridade
A prova de hackers Canal inseguro (hijacking)
Níveis de
CRITICIDADE
Básico
Intermediário
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As API...
Básico
Intermediário
Crítico
❖ Quanto você conhece
dos Client Apps?
❖ As APIs dão acesso a
informações sensíveis?
❖ As API...
Básico
Intermediário
Crítico
Registros médicos, transações
financeiras ou dados vitais ao
negócio
Informações sociais,
Int...
Básico
Intermediário
Crítico
Todas as operações (inclusive
DELETEs) em elementos e
coleções de recursos
GETs e alguns POST...
Separation of
CONCERNS
Web API
FAÇAD
E
Segurança
❖ Agrupamento de elementos com
responsabilidades semelhantes
❖ Simplificação de regras de negócio
Separation of
...
APIs
Web API
FAÇADEUsers Apps
Partners/
Developers
Your Backend
Users Apps
APIs
Autenticação
Autorização
Disponibilidade
Privacidade
Auditoria
Integridade
API Gateway
Partners/
Developer...
Autenticação /
Autorização
Privacidade
Integridade Disponibilidade
Auditoria
❖ Acesso não autorizado
❖ Ataque Força Bruta
...
App Token Basic HTTP OAuth 2.0 OpenID
http://downloads.sensedia.com/webinar-seguranca-de-apis
Instrum/zação
Eat your own
Dog Food
Trace de calls,
Monitoramento,
Rate Limiting e
Alertas
Compreenda o
padrão de uso
das APPs e APIs
status.aws.amazon.com
Status Page,
Release Notes,
Blog
Foruns de discussão e
Abertura de tickets
desenvolvedores.catho.com.br
Instrum/zação
REST + PHP
+
Rest + PHP
+
Silex
- Está entre os mais rápidos micro
frameworks de REST PHP
- Baseado nos componentes
Symphony
- Boa documentação e ...
+
Slim
- Está entre os mais rápidos micro
frameworks de REST PHP
- Boa documentação
- Integrado com implementações de
terc...
+
Lumen
- Baseado no Laravel
- Boa documentação
- Não tão rápido quanto o Slim ou
Silex
+
Phalcon
- O mais rápido dos frameworks
REST PHP
- Extremamente otimizado e modular
- Não tão rápido quanto o Slim ou
Sil...
Api na prática
Backend
APIs
The Digital Glue
Integrações com
Aplicações SaaS
Aplicações
Móveis
Internet
of Things
Aplicações
Web
Ecossist...
+
A mudança
Belo Horizonte Campinas
+
Visão de negócio
- Hub mudanças
- Juntar as duas pontas:
- Clientes
- Transportadoras
- Compartilhar mudanças / cargas
- Economia compartilhada
- Legislação
- Mercado estabelecido
- Barreira de entrada: Base de usuários
+
Oportunidades e Des...
- API como estratégia fundamental
- Api com foco no cliente: Clientes
acessando apps
- Api com foco no parceiro: Transport...
Code!
Swagger
+
Swagger
+
Geração de Sdk/Client
+
Geração do API Front
+
Postman
+
Mock / Server
+
Carregar Swagger no API Suite
+
Ionic
+
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
Quant...
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações
Upcoming SlideShare
Loading in …5
×

PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações

518 views

Published on

José Vahl, Product Manager Sensedia, ministrou o workshop "APIs bem desenhadas como base para integrações", no PHP Experience 2016.

O iMasters PHP Experience 2016 aconteceu nos dias 21 e 22 de Março de 2015, no Hotel Tivoli em São Paulo-SP
http://phpexperience2016.imasters.com.br/

Published in: Education
  • Be the first to comment

PHP Experience 2016 - [Workshop] APIs bem desenhadas como base para integrações

  1. 1. APIs bem desenhadas como base para integrações
  2. 2. José Vahl Gerente de Tecnologia Ciclista, fotógrafo, cervejeiro, gerente de tecnologia e APIs addicted jose.vahl@sensedia.com @josevahl Petterson Andrade Arquiteto de Software Palestrante, nerd, arquiteto de software, cruzeirense e confia na tecnologia petterson.andrade@sensedia.com @pett4j
  3. 3. Applications Services Enabling Digital Transformation Quick Facts Founded in 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
  4. 4. Agenda Integração e evolução Cenários de APIs API First Design de APIs Mão na massa! +
  5. 5. O Estado Corrente das Coisas SOAP/XML WS-* Arquitetura de Serviços! Legado ++ Integração! Foco Total Ênfase no ESB
  6. 6. + Arquitetura tradicional ERPBillingCRM ESB (serviços) Processos Client Aplicações QualidadeeSegurança GovernançaSOA
  7. 7. + Novos elementos, novas abordagens... Cloud Mobilidade Social Analytics Internet of Things Plataforma & Ecossistema Microservice Connector- less
  8. 8. Custom Applications CustomBillingERP Aplicações On Premise Cloud
  9. 9. BillingCheckoutERP ESB (serviços) Processos Cliente Aplicações API Gateway QualidadeeSegurança GovernançaSOA Cloud
  10. 10. Mobilidade Custom Applications CustomBillingERP Aplicações On Premise Preocupações arquiteturais: ● Segurança ● Escalabilidade ● Limitações de banda
  11. 11. Social Aplicações BillingCRMERP
  12. 12. Social Aplicações BillingCRMERP ProxyLayer Monitoração Unificação da gestão de chaves
  13. 13. Internet of Things
  14. 14. 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
  15. 15. 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 aggregation Rate Limiting Monitoring & Alerts Authentication Models Policy Enforcement Exception handling Analytics on API Consumption
  16. 16. Connector- less Adapter Adapter Human Capital Supply Chain HTTP HTTP HTTP HTTP ERP CRM Adapter HTTP Enterprise Resource planning HTTP Enterprise Performance
  17. 17. Connector- less Adapter Human Capital Supply Chain HTTP HTTP HTTP HTTP API Gateway Service aggregation Rate Limiting Monitoring & Alerts Authentication Models Policy Enforcement Exception handling Analytics on API Consumption ERP CRM Adapter HTTP Enterprise Resource planning HTTP Enterprise Performance HTTP Adapter
  18. 18. Uma avalanche de APIs Arquitetura de Serviços! Legado ++ Ênfase no ESB + Formas de integração
  19. 19. Backend APIs The Digital Glue Integrações com Aplicações SaaS Aplicações Móveis Internet of Things Inovação Ecossistema de Parceiros Digitais
  20. 20. + SSOCIAL MMOBILE AANALYTICS CCLOUD IoTINTERNET OF THINGS Transformações Digitais
  21. 21. 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
  22. 22. + Plataformas e Ecossistemas Planejamento de viagens”“
  23. 23. + Clientes e Parceiros Aproximação de vendedores e compradores “ ”
  24. 24. + Clientes e Parceiros Aproximação de vendedores e compradores “ ”
  25. 25. + 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. “ ”
  26. 26. + Inovação Aberta Aceleradora de Startups focada em Apps para os 28M de usuários Nike “ ”
  27. 27. + Multi-sided Business Models Platform Power Conceitos em comum
  28. 28. + 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 Connection The Toolbox: - Simple - Open - Agile
  29. 29. + API First
  30. 30. 78%
  31. 31. + Compromisso com APIs “Anyone who doesn’t do this will be fired. Thank you; have a nice day!” - Jeff Bezos
  32. 32. + 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: version: 0.0.1 title: My API História para contar
  33. 33. + Design despriorizado + Visão de curto prazo Com “APIs”
  34. 34. + Design de APIs info: version: 0.0.1 title: My API
  35. 35. 1966 Clint Eastwood Lee Van Cleef Eli Wallach Sergio Leone (Por um punhado de dólares e Por uns dólares a mais)
  36. 36. RESTSOAP vs. JSONXML vs. Valor RESTful Documentação Status Codes Otimização Hypermedia Segurança Instrum/zação As primeiras decisões…
  37. 37. JSONREST + And the winners are...
  38. 38. Muito confusa ? Valor Não “pegou” http://www.infoq.com/news/2015/11/dropbox-deprecates-apis
  39. 39. 778 Pokémon 248 Habilidades ? Valor
  40. 40. 778 Pokémon 248 Habilidades ?+55k calls / dia Valor
  41. 41. “Você pode até passar batom num porco, mas ele continuará sendo um porco!” Foco no consumidor!
  42. 42. RESTful
  43. 43. REST Representational State Transfer Estilo arquitetural criado por Roy Fielding RESTful Design que respeita os conceitos REST
  44. 44. Coleção /pedidos Resources Elemento /pedidos/{id}
  45. 45. /getAccount /getAllAccounts /createDirectory /updateGroupName /findClientById RPC?
  46. 46. URI: https://api.mycompany.com/name-of-api/resource HTTP ou HTTPS Seu domínio Nome da API (opcional) Recursos e Parâmetros RESTful
  47. 47. GET POST PUT DELETE
  48. 48. 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
  49. 49. Método de Consulta (Cachable, Safe, Idempotente) GET /vendas/pedidos GET /checklist/item/4 GET POST PUT DELETE PATCH OPTIONS HEAD
  50. 50. 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
  51. 51. 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" }
  52. 52. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Remoção (Unsafe, Idempotente) DELETE /pedidos/98W33GJ201 DELETE /users/98S7726QV1/photos
  53. 53. GET POST PUT DELETE PATCH OPTIONS HEAD Método para Atualização parcial (Unsafe, Não-Idempotente) PATCH /users/98W33GJ201 { "email": "joao.silva@empresa.com" } PATCH /pedidos/39D0091B86 { "status": "Cancelado" }
  54. 54. GET POST PUT DELETE PATCH OPTIONS HEAD OPTIONS Quais métodos são permitidos? OPTIONS /clientes Allow: HEAD,GET,POST,OPTIONS HEAD Quero ver apenas o Header HEAD /clientes Date: … Content-Type: application/json Content-Length: 12345
  55. 55. Documentação
  56. 56. DocumentaçãoTHINGS CHANGE! v1 v2 v3 v4
  57. 57. 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 e Parâmetros Outras alternativas: • Twilio: /2010-04-01/Accounts/ • Salesforce.com: /services/data/v20.0/limits Versionamento Nunca quebre o cliente!!
  58. 58. UX (Developer Experience) DX
  59. 59. 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 Portal Documentação
  60. 60. Documentação Interativa desenvolvedores.cnova.com
  61. 61. Getting Started www.twilio.com/api
  62. 62. Exemplos de código na linguagem do developer sendgrid.com/docs
  63. 63. Sign-up e Tokens de acesso automáticos stripe.com/docs
  64. 64. REST Console ou Sandbox / Playgroung dev.transparencia.org.br
  65. 65. Hackathon & Open Innovation
  66. 66. Status Codes 200 400 500 Resultado OK Erro no Cliente Erro no Servidor 201 Criado 202 Aceito 401 Não Autorizado 405 Operação não permitida 413 Request muito grande 429 Muitas requisições 503 Servidor não disponível 204 Sem Conteúdo
  67. 67. STATUS OK 200
  68. 68. 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 } ]
  69. 69. 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 }
  70. 70. 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 }
  71. 71. 200 400 500 Status & Error Codes Outros Comuns 401 403 404 413 429 Unauthorized Forbidden Not Found Request is too Large Too Many Requests
  72. 72. 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
  73. 73. Otimização Filtros e paginação Callbacks Caching
  74. 74. 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:
  75. 75. 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
  76. 76. Caching Evite tráfego desnecessário Latência de rede Sobrecarga nos servidores Atenção ❖ Tempo de invalidação do cache ❖ Sincronização em clusters
  77. 77. Já chegamos? Já chegamos? Já chegamos? Já chegamos? Já chegamos? Stop Pooling Me
  78. 78. 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:
  79. 79. Hypermedia *POX = Plain Old XML, Richardson Maturity Model HATEOAS = Hypermedia as the Engine of Application State http://martinfowler.com/articles/richardsonMaturityModel.html
  80. 80. GET /items?q=macbook+air+new { "results" : [ { "id" : 123, "name" : "Macbook Air 2010 LIKE NEW", "price" : "499" } ] } SEM Hypermedia
  81. 81. 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" } ] }
  82. 82. Segurança ❖ Acesso não autorizado ❖ Ataques ❖ Sobrecarga ❖ Confidencialidade ❖ Implementações desastradas em clients
  83. 83. Acesso não autorizado Segurança baseada na obscuridade A prova de hackers Canal inseguro (hijacking)
  84. 84. Níveis de CRITICIDADE
  85. 85. 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?
  86. 86. 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
  87. 87. Básico Intermediário Crítico Registros 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?
  88. 88. Básico Intermediário Crítico Todas 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?
  89. 89. Separation of CONCERNS Web API FAÇAD E
  90. 90. Segurança ❖ Agrupamento de elementos com responsabilidades semelhantes ❖ Simplificação de regras de negócio Separation of CONCERNS Autenticação Autorização Privacidade Disponibilidade Auditoria Integridade
  91. 91. APIs Web API FAÇADEUsers Apps Partners/ Developers Your Backend
  92. 92. Users Apps APIs Autenticação Autorização Disponibilidade Privacidade Auditoria Integridade API Gateway Partners/ Developers Your Backend Web API FAÇADE
  93. 93. 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)
  94. 94. App Token Basic HTTP OAuth 2.0 OpenID http://downloads.sensedia.com/webinar-seguranca-de-apis
  95. 95. Instrum/zação Eat your own Dog Food
  96. 96. Trace de calls, Monitoramento, Rate Limiting e Alertas Compreenda o padrão de uso das APPs e APIs
  97. 97. status.aws.amazon.com Status Page, Release Notes, Blog
  98. 98. Foruns de discussão e Abertura de tickets desenvolvedores.catho.com.br
  99. 99. Instrum/zação
  100. 100. REST + PHP
  101. 101. + Rest + PHP
  102. 102. + Silex - Está entre os mais rápidos micro frameworks de REST PHP - Baseado nos componentes Symphony - Boa documentação e bom suporte da comunidade.
  103. 103. + Slim - Está entre os mais rápidos micro frameworks de REST PHP - Boa documentação - Integrado com implementações de terceiros
  104. 104. + Lumen - Baseado no Laravel - Boa documentação - Não tão rápido quanto o Slim ou Silex
  105. 105. + 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
  106. 106. Api na prática
  107. 107. Backend APIs The Digital Glue Integrações com Aplicações SaaS Aplicações Móveis Internet of Things Aplicações Web Ecossistema de Parceiros Digitais
  108. 108. + A mudança Belo Horizonte Campinas
  109. 109. + Visão de negócio - Hub mudanças - Juntar as duas pontas: - Clientes - Transportadoras - Compartilhar mudanças / cargas
  110. 110. - Economia compartilhada - Legislação - Mercado estabelecido - Barreira de entrada: Base de usuários + Oportunidades e Desafios
  111. 111. - 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
  112. 112. Code!
  113. 113. Swagger + Swagger
  114. 114. + Geração de Sdk/Client
  115. 115. + Geração do API Front
  116. 116. + Postman
  117. 117. + Mock / Server
  118. 118. + Carregar Swagger no API Suite
  119. 119. + Ionic
  120. 120. + 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

×