@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$