SlideShare uma empresa Scribd logo
Usando Tapioca
para acessar APIs
web
FILIPE XIMENES
@xima
github.com/filipeximenes
http://www.vinta.com.br
API
Application Programming
Interface
Como assim?
◇ APIs definem a interface de interação de um
software.
◇ software pode ser:
○ uma classe de Python
○ um banco de dados
○ um hardware
○ um plugin
○ uma biblioteca
○ um serviço web
Ex.: classe do Python
class User(object):
name = ''
email = ''
def update_data(self, name, email):
self.name = name
self.email = email
def talk(self, message):
print('{} says: {}'.format(self.name, message))
Ex.: serviço web
GET /v1/media/000000
HOST: https://api.instagram.com
POST /v1/media/000000/comments
HOST: https://api.instagram.com
DELETE /v1/media/000000/comment/111111
HOST: https://api.instagram.com
Integrando
serviços web
Quero pegar as informações
básicas do usuário depois que
ele fizer login com a conta do
Facebook.
Opções
◇ Opção 1
○ Ler a documentação da API do Facebook.
○ Usar urllib2 do Python para fazer requisições.
◇ Opção 2
○ Ler a documentação da API do Facebook.
○ Usar Requests do Python para fazer
requisições.
◇ Opção 3
○ Procurar uma lib open source que
implemente a API.
○ Ir para o bar comemorar.
Bibliotecas de API ou API
wrappers
◇ O que é?
○ Implementação de uma API web utilizando
uma linguagem de programação.
◇ Pra que serve?
○ Criar uma camada sobre o HTTP usando a
linguagem que você deseja trabalhar.
■ autenticação
■ composição de urls
■ preparação de requisições
■ processar respostas
■ formatar dados
facepy
facepy
from facepy import GraphAPI
graph = GraphAPI(oauth_access_token)
my_links = graph.get(path='me/links', page=True)
for link in my_links:
print(link) # link is a dict
facepy
graph = GraphAPI(oauth_access_token)
endpoint = '{}/{}'.format(user_id, 'statuses')
data = ??
user_data = graph.post(endpoint, **data)
Algumas notas
◇ Teremos que estudar a documentação do
Facepy
○ Requesições
○ Passagem de parâmetros
○ Acesso as respostas
○ Tratamento de excessões
◇ Teremos que estudar a documentação do
Facebook
○ Endpoints e métodos HTTP disponíveis
○ Parâmetros aceitos por cada endpoint
○ Formatação dos dados em cada resposta
python-twitter
python-twitter
import twitter
api = twitter.Api(consumer_key='consumer_key',
consumer_secret='consumer_secret',
access_token_key='access_token',
access_token_secret='access_token_secret')
statuses = api.GetUserTimeline(
user_id=user_uid, count=20,
since_id=id_of_first_tweet)
python-twitter
python-twitter
Algumas notas
◇ Documentação em pydoc
◇ PEP8 completamente ignorada
◇ Sem suporte a paginação
◇ Um método para cada endpoint
◇ Modelos ao invés de dicionários
Preciso que meu sistema
monitore Twitter, Facebook,
Instagram, Blogger e Tumblr para
capturar postagens de usuários.
◇ Autenticação
◇ Requests como motor das requisições
◇ Suporte a paginação
◇ Execeções para status de erro HTTP (403, 500...)
◇ Suporte a hipermidia (links, HATEOAS)
◇ Explorável
◇ Documentação simples
O wrapper ideal
Delicioso e vem em diversos
sabores!
Tapioca Wrapper
tapioca-wrapper
https://github.com/vintasoftware/tapioca-wrapper
O que é?
Um framework para criar
wrappers para APIs web
Demo time!!
tapioca-facebook
Parabéns
agora você já sabe usar
QUALQUER wrapper tapioca
Desenvolvendo
um wrapper
tapioca
O código
Python
https://github.com/vintasoftware/tapioca-
facebook/blob/master/tapioca_facebook/tapioca_fac
ebook.py
Mapeamento dos endpoints
https://github.com/vintasoftware/tapioca-
facebook/blob/master/tapioca_facebook/resource_
mapping.py
◇ Um método para cada endpoints
◇ Explorável
◇ Serialização e deserialização
◇ Utiliza a lib Requests
◇ Suporte a paginação
◇ Suporte a hipermidia
◇ Acesso rápido a documentação
◇ Suporte a excessões
funcionalidades do tapioca
Benchmarking
~250 linhas de código
tapioca-facebook
~1,000 linhas de código
facepy
~6,000 linhas de código
python-twitter
~150 linhas de código
tapioca-twitter
1 hora
tapioca-parse
◇ Ainda precisamos ler a documentação da
API porém não a do wrapper
◇ Divertido de explorar.
◇ Novos "sabores":
○ Quase 100% declarativo.
○ Pouquíssimas linhas de código.
○ Baterias inclúsas.
Notas
v1.0
Thanks!
Perguntas?
@xima
github.com/filipeximenes
ximenes@vinta.com.br
www.vinta.com.br

Mais conteúdo relacionado

Mais procurados

Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
Luís Cobucci
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
Rodrigo Nossal
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicações
rjsmelo
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
Igor Santos
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
Dorneles Treméa
 
Vim Rocks!
Vim Rocks!Vim Rocks!
Vim Rocks!
magnunleno
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
Mateus Padua
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
magnunleno
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
Bruno Rocha
 
Code Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client LibraryCode Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client Library
Mario Guedes
 
Python na Web
Python na WebPython na Web
Python na Web
Igor Sobreira
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
Alexandre Antunes
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
Er Galvão Abbott
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
Gilson Filho
 
Dominando o customizer
Dominando o customizerDominando o customizer
Dominando o customizer
Nícholas André
 

Mais procurados (15)

Muito prazer, eu sou PHP
Muito prazer, eu sou PHPMuito prazer, eu sou PHP
Muito prazer, eu sou PHP
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
PHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicaçõesPHP e a (in)segurança de aplicações
PHP e a (in)segurança de aplicações
 
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
REST-fuuuu - Boas práticas RESTful [PHPeste 2017]
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
Vim Rocks!
Vim Rocks!Vim Rocks!
Vim Rocks!
 
Tutorial Django + Python
Tutorial Django + PythonTutorial Django + Python
Tutorial Django + Python
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
Escrevendo modulos python com rust
Escrevendo modulos python com rustEscrevendo modulos python com rust
Escrevendo modulos python com rust
 
Code Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client LibraryCode Rage Brazil III - Tudo sobre o REST Client Library
Code Rage Brazil III - Tudo sobre o REST Client Library
 
Python na Web
Python na WebPython na Web
Python na Web
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7Tudo o que você precisa saber sobre o php7
Tudo o que você precisa saber sobre o php7
 
Desenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2pyDesenvolvendo aplicações web com python e web2py
Desenvolvendo aplicações web com python e web2py
 
Dominando o customizer
Dominando o customizerDominando o customizer
Dominando o customizer
 

Semelhante a Usando tapioca para acessar APIs web [PyBR11]

Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
antonio sérgio nogueira
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Python
antonio sérgio nogueira
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
Comunidade NetPonto
 
Apontador API (para programadores Python)
Apontador API (para programadores Python)Apontador API (para programadores Python)
Apontador API (para programadores Python)
Carlos Duarte do Nascimento
 
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
Nathanael Silva
 
Desenvolvimento de aplicações para o Twitter
Desenvolvimento de aplicações para o TwitterDesenvolvimento de aplicações para o Twitter
Desenvolvimento de aplicações para o Twitter
entrebits
 
Os3
Os3Os3
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
Thyago Maia
 
Gerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para PythonGerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para Python
Marcelo Lira
 
Rest fuuuu front-end
Rest fuuuu front-endRest fuuuu front-end
Rest fuuuu front-end
Igor Santos
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
lucianacmota
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
Mateus Malaquias
 
Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
Sérgio Santos
 
Python 08
Python 08Python 08
Python 08
Bruno Catão
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
Ricardo Terra
 
Protocolo Http
Protocolo HttpProtocolo Http
Protocolo Http
Marcondes Maçaneiro
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
JugVale
 
Meet up teste api htt-party cucumber
Meet up   teste api htt-party cucumberMeet up   teste api htt-party cucumber
Meet up teste api htt-party cucumber
Rafael Berçam
 
Conhecendo API do Facebook
Conhecendo API do FacebookConhecendo API do Facebook
Conhecendo API do Facebook
Virtualize Interatividade Digital
 
Marcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-losMarcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-los
Márcio Vinícius Oliveira Sena
 

Semelhante a Usando tapioca para acessar APIs web [PyBR11] (20)

Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPyDesenvolvendo uma Aplicação WEB usando o Python e o CherryPy
Desenvolvendo uma Aplicação WEB usando o Python e o CherryPy
 
Servidor de Aplicação Web: CherryPy - Python
Servidor de Aplicação  Web: CherryPy - PythonServidor de Aplicação  Web: CherryPy - Python
Servidor de Aplicação Web: CherryPy - Python
 
Uma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web APIUma Introdução a ASP.NET Web API
Uma Introdução a ASP.NET Web API
 
Apontador API (para programadores Python)
Apontador API (para programadores Python)Apontador API (para programadores Python)
Apontador API (para programadores Python)
 
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI[ATC] Testando sua API com HTTPARTY e Rodando em um CI
[ATC] Testando sua API com HTTPARTY e Rodando em um CI
 
Desenvolvimento de aplicações para o Twitter
Desenvolvimento de aplicações para o TwitterDesenvolvimento de aplicações para o Twitter
Desenvolvimento de aplicações para o Twitter
 
Os3
Os3Os3
Os3
 
Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3Fundamentos da Programação PHP OO - Aula 3
Fundamentos da Programação PHP OO - Aula 3
 
Gerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para PythonGerando bindings de bibliotecas C++ para Python
Gerando bindings de bibliotecas C++ para Python
 
Rest fuuuu front-end
Rest fuuuu front-endRest fuuuu front-end
Rest fuuuu front-end
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
Workshop Django
Workshop DjangoWorkshop Django
Workshop Django
 
Python 08
Python 08Python 08
Python 08
 
Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)Apostila Java Web (Servlets e JSPs)
Apostila Java Web (Servlets e JSPs)
 
Protocolo Http
Protocolo HttpProtocolo Http
Protocolo Http
 
REST Web Services com Java
REST Web Services com JavaREST Web Services com Java
REST Web Services com Java
 
Meet up teste api htt-party cucumber
Meet up   teste api htt-party cucumberMeet up   teste api htt-party cucumber
Meet up teste api htt-party cucumber
 
Conhecendo API do Facebook
Conhecendo API do FacebookConhecendo API do Facebook
Conhecendo API do Facebook
 
Marcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-losMarcadores semânticos: usá-los ou usá-los
Marcadores semânticos: usá-los ou usá-los
 

Mais de Filipe Ximenes

Multitenant applications: How and Why
Multitenant applications: How and WhyMultitenant applications: How and Why
Multitenant applications: How and Why
Filipe Ximenes
 
Tasks: you gotta know how to run them
Tasks: you gotta know how to run themTasks: you gotta know how to run them
Tasks: you gotta know how to run them
Filipe Ximenes
 
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
[Quase] Tudo que você precisa saber sobre  tarefas assíncronas[Quase] Tudo que você precisa saber sobre  tarefas assíncronas
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
Filipe Ximenes
 
Expressões idiomáticas do python
Expressões idiomáticas do pythonExpressões idiomáticas do python
Expressões idiomáticas do python
Filipe Ximenes
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
Filipe Ximenes
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o Heroku
Filipe Ximenes
 

Mais de Filipe Ximenes (6)

Multitenant applications: How and Why
Multitenant applications: How and WhyMultitenant applications: How and Why
Multitenant applications: How and Why
 
Tasks: you gotta know how to run them
Tasks: you gotta know how to run themTasks: you gotta know how to run them
Tasks: you gotta know how to run them
 
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
[Quase] Tudo que você precisa saber sobre  tarefas assíncronas[Quase] Tudo que você precisa saber sobre  tarefas assíncronas
[Quase] Tudo que você precisa saber sobre tarefas assíncronas
 
Expressões idiomáticas do python
Expressões idiomáticas do pythonExpressões idiomáticas do python
Expressões idiomáticas do python
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Migrando do App Engine para o Heroku
Migrando do App Engine para o HerokuMigrando do App Engine para o Heroku
Migrando do App Engine para o Heroku
 

Usando tapioca para acessar APIs web [PyBR11]