Trabalhando com dados estruturados

Introdução a APIs em Python

Chris Ramakers

Engineering manager

Estruturas de dados complexas

Resposta da API de letras

Resposta da API de letras com HTTP 200 OK. Headers: Content-Type: plain/text, Content-Language: en-US, Last-Modified: Wed, 21 Oct 2023. Body: letra de "Problem Child" de AC/DC.

Resposta da API de álbum

Resposta da API de álbum com HTTP 200 OK. Headers indicam conteúdo JSON. O body inclui detalhes do álbum "Back in Black" de AC/DC, listando faixas.

Introdução a APIs em Python

Estruturas complexas: JSON

  • JSON
    • JavaScript Object Notation
    • Amplamente suportado
    • Legível por humanos e usado por máquinas
  • Content-type, mime-type ou media-type
  • Outros formatos
    • XML
    • CSV
    • YAML

Resposta da API de álbum

Resposta da API de álbum com HTTP 200 OK. Headers indicam conteúdo JSON. O body inclui detalhes do álbum "Back in Black" de AC/DC, listando faixas.

Introdução a APIs em Python

De Python para JSON e volta

  Representação de codificar e decodificar texto em JSON usando Python. O JSON contém detalhes do álbum "Back in Black" de AC/DC.

import json
album =  {'id': 42, 'title':"Back in Black"}
string = json.dumps(album) # Codifica um objeto Python em string JSON
album = json.loads(string) # Decodifica uma string JSON em objeto Python
Introdução a APIs em Python

Solicitando dados JSON

# Requisição GET sem headers
response = requests.get('http://api.music-catalog.com/lyrics')
print(response.text)
N' I never miss Cause I'm a problem child - AC/DC, Problem Child
# Requisição GET com header accept
response = requests.get('http://api.music-catalog.com/lyrics', headers={'accept': 'application/json'})

# Imprima o texto JSON
print(response.text)

# Decodifique para um objeto Python data = response.json() print(data['artist'])
{'artist': 'AC/DC', 'lyric': "N' I never miss Cause I'm a problem child", 'track': 'Problem Child'}

AC/DC
Introdução a APIs em Python

Enviando dados JSON

import requests
playlist = {"name": "Road trip", "genre":"rock", "private":"true"}

# Adicione a playlist usando o argumento `json`
response = requests.post("http://api.music-catalog.com/playlists", json=playlist)
# Pegue o objeto da requisição
request = response.request

# Imprima o header content-type da requisição
print(request.headers['content-type'])
application/json
Introdução a APIs em Python

Vamos praticar!

Introdução a APIs em Python

Preparing Video For Download...