Python Flask – Creación de APIs RESTful con Flask

La creación de APIs RESTful con Flask es una tarea común y sencilla debido a la flexibilidad y simplicidad de Flask como framework web. Si deseas separar la creación de la API en un archivo diferente llamado api.py, puedes hacerlo de la siguiente manera:

  1. Crear el archivo api.py en el mismo directorio que tu archivo app.py o en la ubicación que prefieras.
  2. Definir la API en api.py. A continuación, se muestra cómo podrías definir la API en api.py:

api.py

from flask import Flask, jsonify, request
from app import app, db  # Importa la instancia de la aplicación y la base de datos desde 'app.py'
from app import Usuario  # Importa el modelo de Usuario desde 'app.py'

@app.route('/api/v1/usuarios', methods=['GET'])
def obtener_usuarios():
    usuarios = Usuario.query.all()
    usuarios_json = [{'id': usuario.id, 'nombre': usuario.nombre, 'email': usuario.email} for usuario in usuarios]
    return jsonify({'usuarios': usuarios_json})

@app.route('/api/v1/usuarios/<int:id>', methods=['GET'])
def obtener_usuario(id):
    usuario = Usuario.query.get(id)
    if usuario:
        return jsonify({'id': usuario.id, 'nombre': usuario.nombre, 'email': usuario.email})
    else:
        return jsonify({'message': 'Usuario no encontrado'}), 404

@app.route('/api/v1/usuarios', methods=['POST'])
def crear_usuario():
    datos_usuario = request.json
    nuevo_usuario = Usuario(nombre=datos_usuario['nombre'], email=datos_usuario['email'], password=datos_usuario['password'])
    db.session.add(nuevo_usuario)
    db.session.commit()
    return jsonify({'message': 'Usuario creado correctamente'}), 201

@app.route('/api/v1/usuarios/<int:id>', methods=['PUT'])
def actualizar_usuario(id):
    usuario = Usuario.query.get(id)
    if not usuario:
        return jsonify({'message': 'Usuario no encontrado'}), 404

    datos_actualizados = request.json
    usuario.nombre = datos_actualizados['nombre']
    usuario.email = datos_actualizados['email']
    usuario.password = datos_actualizados['password']
    db.session.commit()
    return jsonify({'message': 'Usuario actualizado correctamente'}), 200

@app.route('/api/v1/usuarios/<int:id>', methods=['DELETE'])
def eliminar_usuario(id):
    usuario = Usuario.query.get(id)
    if not usuario:
        return jsonify({'message': 'Usuario no encontrado'}), 404

    db.session.delete(usuario)
    db.session.commit()
    return jsonify({'message': 'Usuario eliminado correctamente'}), 200

Importar y registrar la API en app.py. Ahora, debes importar y registrar las rutas de la API en tu aplicación Flask en app.py. Puedes hacerlo al final de tu archivo app.py creado en: Python Flask – Autorización de usuarios para acceder a ciertas partes de la aplicación

app.py

# ... (código previo)

# Importa y registra la API desde 'api.py'
from api import * 

...
if __name__ == '__main__':

Prueba la API:

Utiliza herramientas como Postman o cURL para probar las rutas y los métodos de la API.

Esta es una introducción básica para crear una API RESTful con Flask. Dependiendo de tus necesidades específicas, es posible que desees agregar autenticación, autorización, validación de datos, y más. También puedes considerar el uso de extensiones como Flask-RESTful para simplificar la creación de APIs RESTful más avanzadas.

Prueba con cURL

Obtener todos los usuarios (GET):

curl http://localhost:5000/api/v1/usuarios

Obtener un usuario específico por ID (GET):

curl http://localhost:5000/api/v1/usuarios/1

Reemplaza 1 con el ID del usuario que desees obtener.

Crear un nuevo usuario (POST):

curl -X POST -H "Content-Type: application/json" -d '{"nombre": "Nuevo Usuario", "email": "nuevo@email.com", "password": "contrasena"}' http://localhost:5000/api/v1/usuarios

Actualizar un usuario existente por ID (PUT):

curl -X PUT -H "Content-Type: application/json" -d '{"nombre": "Usuario Actualizado", "email": "nuevo@email.com", "password": "nuevacontrasena"}' http://localhost:5000/api/v1/usuarios/1

Reemplaza 1 con el ID del usuario que desees actualizar.

Eliminar un usuario existente por ID (DELETE):

curl -X DELETE http://localhost:5000/api/v1/usuarios/1

Reemplaza 1 con el ID del usuario que desees eliminar.

Asegúrate de adaptar los datos y las rutas según tus necesidades específicas y de que la aplicación Flask esté en ejecución en la dirección y puerto correctos. Estos comandos de cURL te permitirán interactuar con la API y realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en usuarios.

Deja un comentario