Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Premio Nobel

🏅 API Premios Nobel

API desarrollada con FastAPI y MongoDB, que permite consultar información sobre los ganadores del Premio Nobel: sus categorías, motivaciones, países y estadísticas generales.

Ideal para proyectos educativos, de análisis de datos o exploración de la historia de los Premios Nobel.


🚀 Características principales

  • 🔹 Obtener todos los premios Nobel registrados.
  • 🔹 Buscar ganadores por apellido, motivación, año y categoría.
  • 🔹 Consultar las categorías disponibles (Física, Química, Medicina, etc.).
  • 🔹 Generar estadísticas sobre ganadores y años.
  • 🔹 Conexión directa con una base de datos MongoDB Atlas.
  • 🔹 Incluye archivo JSON listo para importar en MongoDB.

🧩 Tecnologías utilizadas

  • Python 3.10+
  • FastAPI
  • Uvicorn
  • PyMongo
  • dotenv
  • MongoDB Atlas

⚙️ Instalación y configuración

1️⃣ Clonar el repositorio

git clone https://github.com/tuusuario/api-premios-nobel.git
cd api-premios-nobel

2️⃣ Crear y activar un entorno virtual

python -m venv venv
source venv/bin/activate   # En Linux o Mac
venv\Scripts\activate      # En Windows

3️⃣ Instalar dependencias

pip install -r requirements.txt

4️⃣ Configurar variables de entorno

Crea un archivo .env en la raíz del proyecto con el siguiente contenido:

MONGO_URI=mongodb+srv://<usuario>:<contraseña>@cluster0.xxxxxx.mongodb.net/
DB_NAME=Nobel_Prize

🗄️ Base de datos MongoDB

La API utiliza una colección llamada prize dentro de la base de datos Nobel_Prize.
Puedes importar los datos de ejemplo incluidos en este proyecto siguiendo estos pasos:

📦 Importar datos de ejemplo

1️⃣ Asegúrate de tener instalado MongoDB Shell o MongoDB Compass.

2️⃣ Dentro del proyecto encontrarás la carpeta bd/ con el archivo:

bd/nobel_prize.json

3️⃣ Importa los datos a MongoDB ejecutando este comando en tu terminal:

mongoimport --uri "mongodb+srv://<usuario>:<contraseña>@cluster0.xxxxxx.mongodb.net/Nobel_Prize"   --collection prize   --file bd/nobel_prize.json   --jsonArray

💡 Reemplaza <usuario> y <contraseña> con tus credenciales reales de MongoDB Atlas.

4️⃣ Verifica la importación:

show dbs
use Nobel_Prize
show collections
db.prize.findOne()

▶️ Ejecución del servidor

uvicorn main:app --reload

Por defecto, el servidor correrá en:

👉 http://127.0.0.1:8000


📚 Endpoints disponibles

Método Ruta Descripción
GET / Información general de la API y endpoints disponibles
GET /premios Lista de todos los premios (con paginación por limite y skip)
GET /premios/apellido/{apellido} Buscar ganadores por apellido
GET /premios/motivacion/{texto} Buscar premios por texto en la motivación
GET /premios/{anio}/{categoria} Buscar premios por año y categoría
GET /categorias Obtener todas las categorías existentes
GET /estadisticas Obtener estadísticas generales sobre los ganadores

📊 Ejemplos de uso

✅ Obtener los primeros 5 premios:

GET /premios?limite=5

✅ Buscar por apellido:

GET /premios/apellido/Einstein

✅ Buscar por palabra clave en la motivación:

GET /premios/motivacion/relativity

✅ Buscar premios de Química del año 2020:

GET /premios/2020/chemistry

✅ Ver categorías disponibles:

GET /categorias

✅ Ver estadísticas:

GET /estadisticas

🧠 Ejemplo de respuesta

{
  "cantidad": 2,
  "premios": [
    {
      "year": "1921",
      "category": "physics",
      "overallMotivation": null,
      "laureates": [
        {
          "id": "1",
          "firstname": "Albert",
          "surname": "Einstein",
          "motivation": "\"for his services to Theoretical Physics...\"",
          "share": "1"
        }
      ]
    }
  ]
}

📁 Estructura del proyecto

📦 NOBEL_API
 ┣ 📂 bd
 ┃ ┗ 📜 nobel_prize.json
 ┣ 📂 env
 ┣ 📂 __pycache__
 ┣ 📜 main.py
 ┣ 📜 .env
 ┣ 📜 .gitignore
 ┣ 📜 requirements.txt
 ┗ 📜 README.md

🧾 Licencia

Este proyecto está bajo la licencia MIT.
Puedes usarlo, modificarlo y distribuirlo libremente con atribución.


💡 Autor

Jairo José Medina Suárez (Jarez)
Desarrollador de software y entusiasta de la ciencia de datos.

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages