Upload
wanderlei-souza
View
1.094
Download
0
Embed Size (px)
DESCRIPTION
Conheça a experiência do time do Apontador no desenvolvimento de uma nova API REST usando Java e Spring. Veja desafios encontrados, problemas/soluções e o resultado da experiência de um ano de desenvolvimento de uma nova plataforma de busca de locais. Principais tópicos: - Contexto e melhores práticas do REST - Autenticação e permissionamento com OAUTH2 - Negociação de conteúdo (XML, JSON) - Console de desenvolvimento/testes - Monitoração o estado da API - Documentação e testes de integração
Citation preview
@wandi [email protected]
296 É O NÚMERO DE VISITAS AOS LOCAIS CADASTRADOS NO
MILHÕES
Sobre APONTADOR
NOS ÚLTIMOS 12 MESES
APONTADOR.COM.BR
DE LOCAIS CADASTRADOS. MILHÕES 7.5 presença em todas as 5.565 cidades do Brasil.
17 MILHÕES DE USUÁRIOS VISITAM APONTADOR.COM.BR TODO MÊS.
3MILHÕES
DE OPINIÕES SOBRE LOCAIS SÃO COMPARTILHADAS ENTRE OS USUÁRIOS.
13 MILHÕES
DE TELEFONES COMERCIAS SÃO ENCONTRADOS NO APONTADOR.
1 em cada 5 brasileiros acessam Apontador
procurando por locais ou serviços.
• Uma$auten)cação$que$funcione$
– E$que$funcione$também$no$celular$
• Flexibilidade$para$o$)me$de$negócios$
• Velocidade$na$entrega$de$novas$funcionalidades$
• Velocidade$no$tempo$de$resposta$
• Maior$compa)bilidade$com$REST$
• Design$for$Opera)ons$• Ahhh$e$que$seja$fácil$de$usar$
A missão da nova API (V2)
• Rever$o$Modelo&de&Domínio&• Modelo$Flexível:$Novos&Endpoints&• Segurança:$OAuth2&• Uso$de$Frameworks&• Performance:$Escrita$Assíncrona$e$Caching$• Melhores&prá@cas&REST$• Design$for$Opera)ons:$Self&Tests&• Console$de$desenvolvimento:$API&Playground&
//COMOFAZ?
• Defina$o$modelo&de&domínio&– Não$dá$para$começar$sem$isso$
– Conheça$sua$empresa$(e$as$outras…)$
– Oportunidades$para$melhorar$
• Hipermídia&– Como$os$objetos$de$domínio$se$relacionam?$
• Definir$endpoints$– Cuidado$com$verbos$(REST$como$RPC)$
– Os$endpoints$são$o$limite&do&@me&de&negócio&
Começando com REST
Apontador API-V2
OAUTH2
• Evolução$do$protocolo$OAUTH$1$(2007)$• Simplicidade:$Novos$Fluxos$
• Adeus$compa)bilidade,$novo$protocolo$
• Tudo$HTTPS$• Homens$Trabalhando:$DraY$31$
OAUTH2: Como vendi a idéia
• MicrosoY,$Google,$Facebook,$Foursquare$
• Um$fluxo$para$celulares$
• Login$em$aplicações$na)vas$
• //FIXME$correção$da$implementação$anterior$
• SIMPLICIDADE$
curl$cX$POST$cd$
"client_id=QConSP2013&client_secret=PJHh01pWG1sbcq43vsOgAiXtA2C~&grant_type=client_creden)als"$hips://api.apontador.com.br/v2/oauth/token$
curl$cX$GET$cH$"Accept:$applica)on/json"$cH$"Authoriza)on:$Bearer$
2ab795caX71bcX45bbX8e48X40aa335a816d"$hips://api.apontador.com.br/v2/
places?q=pizzaria$
OAUTH2
OAUTH2
hips://api.apontador.com.br/v2/oauth/authorize?
client_id=QConSP2013&redirect_uri=hip://seuhost/
&scope=read&response_type=code$
hip://seuhost/?code=ufXpQ8$
curl$hips://api.apontador.com.br/v2/oauth/token$cd$
"code=ufXpQ8&client_id=QConSP2013&client_secret=PJHh01pWG1sbcq43vsOgAiXtA2C~&redirect_uri=hip://
seuhost/&grant_type=authoriza)on_code"$
Apontador REST API-V2
URI$Design$ $$
Plural$para$coleções$ /places$
Iden)ficação$ /places/M25GJ288$
Associações$ /places/M25GJ288/reviews$
HTTP$ GET$PUT$POST$DELETE$
Conteúdo$ JSON$/$XML$
Paginação$ ?start=10&rows=10$
Busca$livre$ /places?q=pizzaria$
Conteúdo$parcial$ /places?q=pizzaria&fl=name,phones$
Verbos?$ /users/6715779712/resetPassword$
camelCase$ createdAt$
Versionamento$ hips://api.apontador.com.br/v2/places$
APIGEE console
Apontador API-V2
STATUS$ $$
200$OK$
201$Created$
202$Accepted$
204$No$Content$
301$Moved$Permanently$
400$Bad$Request$
401$Unauthorized$
402$Payment$Required$
403$Forbidden$
404$Not$Found$
405$Method$Not$Allowed$
409$Conflict$
410$Gone$
413$Request$En)ty$Too$Large$
420$Enhance$your$calm$
429$Too$Many$Requests$
500$Internal$Server$Error$
503$Service$Unavailable$
Arquitetura e Frameworks
Linguagens$ Storage$ Frameworks$ Outros$
Java$ Oracle$ Spring$ Nginx$
Redis$ Tomcat$
Ac)veMQ$
Solr$
Spring
Aspectos: Perf4J + Splunk
Spring
REDIS
• Cache$Chave=Valor$• Escrita$/$Leitura$separados$• Resiliência$e$Performance$
• Ranking$• Armazenamento$temporário$
Monitoração
Monitoração
@wandi [email protected]
Q&A$