flask: REST API

John Cardozo

flask: rest api

AGENDA

Rest API

Request - Response

Servidor

Cliente

rest api

rest api

request - response

rest API

Arquitectura que define las restricciones en el uso de servicios web

REST

REpresentational State Transfer

API

Application Programming Interface

Conjunto de operaciones que definen la interacción entre varios sistemas

cómo se van a conectar?

Qué se puede utilizar?

rest API

cliente

servidor

http

request

response

resource

www.miempresa.com

/usuarios

request - response

request

http://www.miempresa.com/usuarios

http

protocolo

www.miempresa.com

servidor

/usuarios

recurso

response

{
  "usuarios": [
    { "nombres": "john", "apellidos": "lennon", "edad": 30 },
    { "nombres": "paul", "apellidos": "mccartney", "edad": 31 },
    { "nombres": "george", "apellidos": "harrison", "edad": 30 },
    { "nombres": "ringo", "apellidos": "star", "edad": 33 },
  ]
}

servidor

servidor

flask

servidor

Instalación de Flask

pip install flask

* usualmente en un ambiente virtual

from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return 'Servidor en funcionamiento'

@app.route('/hola')
def hola():
    return 'Hola desde el servidor'

Código fuente: servidor.py

resources

ejecución del servidor

set FLASK_ENV="development"
set FLASK_APP="server.py"

Variables de entorno

export FLASK_ENV=development
export FLASK_APP=server.py
flask run

Ejecución

flask run --host=0.0.0.0

Ejecución recibiendo peticiones externas

ejemplo del servidor - get

from flask import Flask, jsonify

app = Flask(__name__)


@app.route('/usuarios')
def usuarios():
    data = {
        "usuarios": [
            {'id': 1, 'name': 'john'},
            {'id': 2, 'name': 'paul'},
            {'id': 3, 'name': 'george'},
            {'id': 4, 'name': 'ringo'}
        ]
    }
    return jsonify(data)

cliente

cliente

requests

cliente

Instalación de Requests

pip install requests

* usualmente en un ambiente virtual

# Libreria
import requests

# Peticion
url = 'http://servidor:5000/recurso'
respuesta = requests.get(url)

# Obtener datos json
datos = respuesta.json()

Código fuente: cliente.py

python cliente.py

Ejecución desde consola

ejemplo del cliente - get

import requests

# Petición a /usuarios
respuesta = requests.get('http://localhost:5000/usuarios')

# Imprimir datos de la respuesta
print(type(respuesta))
print(respuesta)
print(respuesta.headers)
print(respuesta.text)
print(respuesta.json())

# Convertir la respuesta a JSON
datos = respuesta.json()

# Imprime los datos recibidos
for usuario in datos['usuarios']:
    print(f"ID={usuario['id']}\tNAME={usuario['name']}")

ejemplo de utilizando post

@app.route('/longitud/', methods=['POST'])
def longitud_cadena():
    # Obtiene el valor enviado por el cliente
    cadena = request.values['cadena']
    
    # Calcula la longitud de la cadena
    longitud = len(cadena)

    # Retorna la longitud
    return {'longitud': longitud}
# Hace la petición al servidor
respuesta = requests.post(
    'http://localhost:5000/longitud/', 
    data = {'cadena': 'universidad'}
    )
# Imprime la respuesta del servidor
print(respuesta.text)

Cliente

Servidor

john cardozo

johncardozo@gmail.com

Flask: Rest API

By John Cardozo

Flask: Rest API

Rest API basado en Flask y un cliente en Python

  • 485