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.
- 🔹 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.
- Python 3.10+
- FastAPI
- Uvicorn
- PyMongo
- dotenv
- MongoDB Atlas
git clone https://github.com/tuusuario/api-premios-nobel.git
cd api-premios-nobelpython -m venv venv
source venv/bin/activate # En Linux o Mac
venv\Scripts\activate # En Windowspip install -r requirements.txtCrea 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_PrizeLa 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:
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()uvicorn main:app --reloadPor defecto, el servidor correrá en:
| 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 |
GET /premios?limite=5
GET /premios/apellido/Einstein
GET /premios/motivacion/relativity
GET /premios/2020/chemistry
GET /categorias
GET /estadisticas
{
"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"
}
]
}
]
}📦 NOBEL_API
┣ 📂 bd
┃ ┗ 📜 nobel_prize.json
┣ 📂 env
┣ 📂 __pycache__
┣ 📜 main.py
┣ 📜 .env
┣ 📜 .gitignore
┣ 📜 requirements.txt
┗ 📜 README.md
Este proyecto está bajo la licencia MIT.
Puedes usarlo, modificarlo y distribuirlo libremente con atribución.
Jairo José Medina Suárez (Jarez)
Desarrollador de software y entusiasta de la ciencia de datos.
