Embrulhando APIs com Tapioca

36
Embrulhando APIs com Tapioca Filipe Ximenes @xima

Transcript of Embrulhando APIs com Tapioca

Page 1: Embrulhando APIs com Tapioca

Embrulhando APIs com TapiocaFilipe Ximenes

@xima

Page 2: Embrulhando APIs com Tapioca
Page 3: Embrulhando APIs com Tapioca

APIApplication Programming Interface

Page 4: Embrulhando APIs com Tapioca

Oxe!

● APIs definem a interface de interação de um software ou um pedaço de sofware.

● Podem ser a interface de:○ uma classe de Python○ banco de dados○ hardware○ plugin○ biblioteca○ serviço web

Page 5: Embrulhando APIs com Tapioca

Exemplo: classe de Pythonclass MyClass(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))

Page 7: Embrulhando APIs com Tapioca

Integrações com serviços web

Page 8: Embrulhando APIs com Tapioca

“quero que meu usuário possa salvar as informações dele no Evernote!"

“preciso enviar os dados do meu sistema para o Sales Force do cliente."

Page 9: Embrulhando APIs com Tapioca

“vou desenvolver o meu próprio google maps para depois poder construir um app de GPS”

Said no one ever

Page 10: Embrulhando APIs com Tapioca

"eu quero que meu app tenha login com facebook para pegar todas as informações do

usuário sem que ele tenha que digitar"

Page 11: Embrulhando APIs com Tapioca

Cabeça do desenvolvedor

● V1○ Ler a documentação da API do Facebook.○ Utilizar a urllib2 do python para fazer as requisições.

● V2○ Ler a documentação da API do Facebook.○ Utilizar a lib Requests do python para fazer as

requisições● V3

○ Procurar no google uma lib que já tenha todas as requisições mapeadas.

○ Ir pra praia tomar cerveja.

Page 12: Embrulhando APIs com Tapioca

● O que é?○ Aplicação prática em uma LP da documentação.

● Pra que serve?○ Abstrair o HTTP na sua linguagem preferida

■ autenticação■ montar urls■ preparar requests■ processar responses■ formatar dados

Libs ou Wrappers de API web

Page 13: Embrulhando APIs com Tapioca

facepy

Page 14: Embrulhando APIs com Tapioca

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 -> dicionário

Page 15: Embrulhando APIs com Tapioca

facepy

graph = GraphAPI(oauth_access_token)

endpoint = '{}/{}'.format(user_id, 'statuses')

data = ??

user_data = graph.post(endpoint, **data)

Page 16: Embrulhando APIs com Tapioca

Algumas observações

● Necessidade de estudar a biblioteca Facepy○ Interfaces de requests○ Passagem de parâmetros○ Leitura dos resultados○ Tratamento de erros e excessões

● Necessidade de estudar a documentação da API○ Endpoints e métodos HTTP disponíveis○ Parâmetros disponíveis para cada endpoint○ Formatação dos dados passados

Page 17: Embrulhando APIs com Tapioca

python-twitter

Page 18: Embrulhando APIs com Tapioca

python-twitterimport 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)

Page 19: Embrulhando APIs com Tapioca

python-twitter

Page 20: Embrulhando APIs com Tapioca

python-twitter

Page 21: Embrulhando APIs com Tapioca

python-twitter

● Documentação em pydoc● Código pouco pythonico● Sem suporte a paginação● Cada endpoint da API é um método do

wrapper● Modelos ao invés de dicionários

Page 22: Embrulhando APIs com Tapioca

“eu quero um sistema que monitora Twitter, Facebook, Instagram, Blogger e Tumblr e

captura informações de todas as postagens dos usuários.”

Page 23: Embrulhando APIs com Tapioca

O wrapper ideal

● Autenticação● Lib Requests como motor de requisições● Suporte a paginação (generators)● Suporte a erros através de excessões (403,

500...)● Suporte a hypermedia (links)● Explorável● Documentação simples

Page 24: Embrulhando APIs com Tapioca

Tapioca WrapperDelicioso e vem em diversos sabores!

Page 25: Embrulhando APIs com Tapioca

tapioca-wrapper

Page 27: Embrulhando APIs com Tapioca

O que é?

Framework para criação de wrappers de APIs web

Page 28: Embrulhando APIs com Tapioca

[Demo] Tapioca Facebook

https://github.com/vintasoftware/tapioca-facebook

token: https://developers.facebook.com/tools/explorer/

Page 29: Embrulhando APIs com Tapioca

Desenvolvendo um Tapioca

Faça o seu próprio sabor

Page 31: Embrulhando APIs com Tapioca

● Mapeamento dos endpoints● Explorável● Requisições (get/post/put/delete…)● Suporte a generators● Suporte a hipermedia● Acesso rápido a documentação

Features de um wrapper Tapioca

Page 33: Embrulhando APIs com Tapioca

LOCs

facepy ~> 1k linhas

python-twitter ~> 6k linhas

Page 34: Embrulhando APIs com Tapioca

Tempo

tapioca-parse ~> 1 hora

Page 35: Embrulhando APIs com Tapioca

Notas

● Ainda há necessidade de se ler a documentação. Porém apenas a documentação da API.

● Torna divertido explorar a biblioteca.● Libs:

○ Escritas de forma quase 100% declarativa.○ Poucas linhas de código.○ Funcionais.

● Temos bastante espaço para melhorias ainda.

Page 36: Embrulhando APIs com Tapioca

Perguntas?

https://github.com/vintasoftware/tapioca-wrapper

@ximagithub.com/[email protected]

www.vinta.com.br