DEV Community

Emily Johnson
Emily Johnson

Posted on • Edited on

Cómo crear una API REST para lectura de tarot con FastAPI

Introducción

El tarot es una práctica espiritual milenaria que ha sabido evolucionar con los tiempos. Hoy en día, muchas personas interesadas en el esoterismo buscan nuevas formas de consultar las cartas, ya sea por medio de aplicaciones móviles, sitios web o bots. Crear una API REST que automatice este proceso puede facilitar lecturas personalizadas para miles de usuarios.

En este artículo aprenderás cómo desarrollar una API REST usando Python y FastAPI, ideal para integrarse con proyectos espirituales o tiendas de botánica esotérica. Además, exploraremos ejemplos prácticos de cómo desplegarla y consumirla.


Preparativos

Antes de escribir código, asegúrate de tener Python y pip instalados. Luego, ejecuta lo siguiente:

pip install fastapi uvicorn
Enter fullscreen mode Exit fullscreen mode

También puedes instalar herramientas útiles para desarrollo como httpie o requests para probar la API desde consola o script.


Estructura del Proyecto

Creamos una estructura simple para este proyecto:

tarot_api/
├── main.py
├── tarot_logic.py
├── cards.json
└── requirements.txt
Enter fullscreen mode Exit fullscreen mode

Definiendo las Cartas del Tarot

Creamos un archivo cards.json con las cartas y sus significados:

[
  {
    "name": "El Mago",
    "meaning_up": "Poder, habilidad, concentración",
    "meaning_rev": "Manipulación, trucos, falta de planificación"
  },
  {
    "name": "La Estrella",
    "meaning_up": "Esperanza, renovación, espiritualidad",
    "meaning_rev": "Desesperanza, desaliento, falta de fe"
  }
]
Enter fullscreen mode Exit fullscreen mode

Lógica del Tarot

Creamos el archivo tarot_logic.py:

import json
import random

def load_cards():
    with open("cards.json", "r", encoding="utf-8") as file:
        return json.load(file)

def draw_card():
    cards = load_cards()
    card = random.choice(cards)
    orientation = random.choice(["up", "rev"])
    meaning = card["meaning_up"] if orientation == "up" else card["meaning_rev"]
    return {
        "card": card["name"],
        "orientation": "upright" if orientation == "up" else "reversed",
        "meaning": meaning
    }

def draw_multiple_cards(count=3):
    cards = load_cards()
    drawn = random.sample(cards, min(count, len(cards)))
    results = []
    for card in drawn:
        orientation = random.choice(["up", "rev"])
        meaning = card["meaning_up"] if orientation == "up" else card["meaning_rev"]
        results.append({
            "card": card["name"],
            "orientation": "upright" if orientation == "up" else "reversed",
            "meaning": meaning
        })
    return results
Enter fullscreen mode Exit fullscreen mode

Construyendo la API con FastAPI

Ahora, en main.py:

from fastapi import FastAPI, Query
from tarot_logic import draw_card, draw_multiple_cards

app = FastAPI()

@app.get("/")
def read_root():
    return {"mensaje": "Bienvenido a la API de Lectura de Tarot"}

@app.get("/carta")
def obtener_carta():
    return draw_card()

@app.get("/tirada")
def obtener_tirada(cantidad: int = Query(3, ge=1, le=10)):
    return draw_multiple_cards(cantidad)
Enter fullscreen mode Exit fullscreen mode

Puedes iniciar el servidor con:

uvicorn main:app --reload
Enter fullscreen mode Exit fullscreen mode

Pruebas de Consumo de la API

Con httpie puedes hacer una petición fácilmente:

http GET http://127.0.0.1:8000/carta
Enter fullscreen mode Exit fullscreen mode

O con requests en Python:

import requests

r = requests.get("http://127.0.0.1:8000/carta")
print(r.json())
Enter fullscreen mode Exit fullscreen mode

Aplicaciones Prácticas

Esta API puede alimentar interfaces de usuario interactivas o servicios de mensajería automatizados. Imagina una tienda espiritual que ofrece una lectura diaria gratuita como gancho para atraer nuevos visitantes.

También puede ser útil para profesionales como Brujos en Elkhorn que desean ofrecer servicios digitales sin necesidad de interacción humana directa.


Integraciones Locales

Un ejemplo interesante sería integrarla en sitios que ofrecen servicios de Lectura del Tarot Elkhorn. De esta manera, los visitantes pueden recibir respuestas inmediatas sin necesidad de esperar por una consulta presencial.

Además, centros espirituales o religiosos como los dedicados a la Santería Elkhorn Wi podrían utilizar esta API para complementar sus actividades con un recurso digital moderno.


Recomendaciones y Buenas Prácticas

  • Usa HTTPS si vas a exponer tu API en línea.
  • Considera añadir autenticación si implementas funciones avanzadas o sensibles.
  • Agrega logs o almacenamiento de consultas para análisis futuro.
  • Puedes extender la API para incluir diferentes tiradas como cruz celta, amor, dinero, etc.

Conclusión

Las herramientas tecnológicas como FastAPI permiten digitalizar saberes ancestrales como el tarot de una forma moderna, rápida y funcional. Esta API básica sirve como punto de partida para un sistema de lectura digital que puede adaptarse a múltiples usos: desde plataformas educativas hasta servicios de lectura espirituales.

Top comments (0)