arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Consumir APIS con Django

Eduardo Ismael Garcia

Full Stack Developer at Código Facilito.

av_timer 1 Min. de lectura

remove_red_eye 52504 visitas

calendar_today 25 Octubre 2019

La forma más sencilla de consumir un servicio web con Python, en este caso un API, es mediante la biblioteca requests.

Lo primero que haremos será instalar dicha librería.

pip install requests

En Django, una muy buena práctica es realizar las peticiones en la capa de la vista, es decir, en los archivos views.py. En este caso estaremos trabajando con el API de Random User, API que nos permite obtener información acerca de un usuario aleatorio.

Generamos un nuevo archivo llamado services.py.

import requests

def generate_request(url, params={}):
    response = requests.get(url, params=params)

    if response.status_code == 200:
        return response.json()

def get_username(params={}):
    response = generate_request('https://randomuser.me/api', params)
    if response:
       user = response.get('results')[0]
       return user.get('name').get('first')

    return ''"

Definimos dos nuevas funciones generate_request y get_username. generate_request será la función encargada de realizar la petición al EndPoint correspondiente, por otra parte la función get_username a partir de la respuesta por parte del servidor retornará o no el nombre del usuario.

En este caso definimos una función la cual permite realizar la n cantidad de peticiones a diferentes servidores.

Dentro de nuestra vista hacemos el llamado a la función.

from .services import get_username

def hello_user(requests):
    context = {
        'name': get_username()
    }
    return render(requests, 'hello_user.html', context)
Si así lo deseamos poder enviar parametros a nuestra petición.

def hello_user(requests):
    params = { 'order': 'desc' }

    context = {
        'name': get_username(params)
    }
    return render(requests, 'hello_user.html', context)

Bootcamp FullStack con JavaScript

Más información

Inscripciones Abiertas.