Este proyecto permite consultar datos geográficos de México desde la API de INEGI, almacenarlos en una base de datos MySQL y exponer esta información a través de un API REST usando Django y Django Rest Framework.
- Conexión a la API de INEGI para obtener información de estados, municipios, localidades y asentamientos.
- Almacenamiento de datos en una base de datos MySQL.
- API REST para consultar la información, con filtros para estados, municipios, localidades y asentamientos.
- Paginación para manejar grandes volúmenes de datos.
- Optimización de consultas a la base de datos para un rendimiento eficiente.
- Autenticación y Autorización utilizando tokens JWT (JSON Web Tokens) para proteger los endpoints y restringir el acceso solo a usuarios autenticados.
- Python 3.12
- MySQL 8.0 o superior
virtualenv
para crear un entorno virtualmysqlclient
para conectar Django con MySQL
Sigue los pasos a continuación para configurar el proyecto en tu entorno local:
git clone https://github.com/tu_usuario/inegi_project.git
cd inegi_project
python -m venv env
Windows:
.\env\Scripts\activate
Linux/Mac:
source env/bin/activate
pip install -r requirements.txt
Edita el archivo inegi_project/settings.py
y asegúrate de que la configuración de la base de datos sea correcta:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'inegi_db',
'USER': 'user',
'PASSWORD': 'contraseña',
'HOST': 'localhost',
'PORT': '3306',
}
}
Ejecuta las migraciones para crear las tablas en la base de datos:
python manage.py makemigrations
python manage.py migrate
Ejecuta el comando personalizado para obtener y almacenar los datos de la API de INEGI:
python manage.py cargar_datos_inegi
Inicia el servidor de desarrollo de Django:
python manage.py runserver
Visita http://127.0.0.1:8000/api/ para ver la API en funcionamiento.
-
GET /api/estados/: Lista todos los estados. Filtros:
cve_ent
: Filtra por clave de estado.
-
GET /api/municipios/: Lista todos los municipios. Filtros:
cve_ent
: Filtra por clave de estado.
-
GET /api/localidades/: Lista todas las localidades. Filtros:
cve_ent
: Filtra por clave de estado.cve_mun
: Filtra por clave de municipio.
-
GET /api/asentamientos/: Lista todos los asentamientos. Filtros:
cve_ent
: Filtra por clave de estado.cve_mun
: Filtra por clave de municipio.cve_loc
: Filtra por clave de localidad.
La API está protegida mediante JSON Web Tokens (JWT). Solo los usuarios autenticados pueden acceder a los endpoints protegidos.
Para obtener un token de autenticación, envía una solicitud POST a:
POST /api/token/
Con los siguientes datos en el cuerpo de la solicitud:
{
"username": "tu_usuario",
"password": "tu_contraseña"
}
Una vez que obtengas el token, añade el siguiente encabezado a tus solicitudes para acceder a los endpoints protegidos:
Authorization: Bearer <tu_token>
Si el token de acceso expira, puedes solicitar un nuevo token usando el token de actualizacion:
POST /api/token/refresh/
Con el siguiente cuerpo de la solicitud:
{
"refresh": "tu_refresh_token"
}