Ideas finales

Introducción a las API en Python

Chris Ramakers

Engineering Manager

Conceptos básicos de API

  • Función de las APIs
  • Tipos de APIs
  • Componentes de una URL
  • Anatomía de petición y respuesta
  • Verbos HTTP

Introducción a las API en Python

APIs con Python

Paquete Requests

import requests

Métodos HTTP

# Leer un recurso
requests.get('https://api.my-music.com')
# Crear un recurso
requests.post('https://api.my-music.com', data={...})
# Actualizar un recurso
requests.put('https://api.my-music.com', data={...})
# Eliminar un recurso
requests.delete('https://api.my-music.com')

Parámetros de URL

query_params = {'artist': 'Deep Purple'}
requests.get('http://api.my-music.com', params=query_params)

Encabezados

headers = {'accept': 'application/json'}
response = requests.get('http://api.my-music.com', headers=headers)
print(response.headers.get('content-type'))

Códigos de estado

response = requests.get('http://api.my-music.com')
print(response.status_code)
Introducción a las API en Python

Temas avanzados

  • Autenticación
    • Autenticación básica
      headers = {'Authorization':'Basic am9obkBleGF...'}
      
    • Autenticación con API key/token
      headers = {'Authorization': 'Bearer faaa1c9f4...'}
      
  • Datos estructurados
    • Solicitar datos en formato JSON
      requests.get('https://api.my-music.com', headers={'accept': 'application/json'})
      
    • Enviar datos en formato JSON
      playlists = [{"Name":"My favorite songs"}, {"Name":"Road Trip"}]
      requests.post('https://api.my-music.com/playlists/', json=playlists)
      
Introducción a las API en Python

Manejo de errores

  • Tipos de errores
    • Errores de conexión
    • Errores HTTP
      • 4XX Errores de cliente
      • 5XX Errores de servidor
  • Manejo de errores con códigos de estado
    • response.status_code
  • Manejo de errores con excepciones
    • raise_for_status()
import requests
from requests.exceptions import ConnectionError, HTTPError

try:
    response = requests.get("http://api.music-catalog.com/albums") 
    response.raise_for_status()

except ConnectionError as conn_err: 
    print(f'Connection Error! {conn_err}.')

except HTTPError as http_err:
    print(f'HTTP error occurred: {http_err}')
Introducción a las API en Python

¡Enhorabuena!

Introducción a las API en Python

Preparing Video For Download...