roble_api_database 1.0.1
roble_api_database: ^1.0.1 copied to clipboard
Cliente HTTP para interactuar con el backend Roble API.
📦 roble_api_database #
Paquete para Flutter que facilita la comunicación con la plataforma Roble API.
Roble #
https://roble.openlab.uninorte.edu.co/
Este paquete provee una capa ligera para autenticación y operaciones CRUD sobre las bases de datos expuestas por Roble, manteniendo una interfaz simple y adecuada para aplicaciones móviles y de escritorio con Flutter.
Características principales
- Inicialización simple mediante
RobleApiConfig. - Métodos para registro, login y logout.
- Operaciones CRUD (
create,read,update,delete). - Helpers para manejo de esquemas/tablas.
- Inyección de
http.Clientpara facilitar tests. - Manejo consistente de errores (lanza
RobleApiException).
🚀 Instalación #
Agrega la dependencia en tu proyecto Flutter:
flutter pub add roble_api_database
Importa el paquete donde lo necesites:
import 'package:roble_api_database/roble_api_database.dart';
🧭 Quick start #
Ejemplo mínimo de uso (async/await):
final db = RobleApiDataBase(
config: const RobleApiConfig(
dataUrl: 'https://tu-api.com/database/tu-proyecto',
authUrl: 'https://tu-api.com/auth/tu-proyecto',
),
);
// Registrar usuario
final user = await db.register(
email: 'usuario@email.com',
password: 'Password123!',
name: 'Nombre Usuario',
);
// Iniciar sesión
final session = await db.login(
email: 'usuario@email.com',
password: 'Password123!',
);
String accessToken = session['accessToken'];
// Cerrar sesión
await db.logout(accessToken: accessToken);
// CREATE - Crear registro
final nuevoUsuario = await db.create('usuarios', {
'nombre': 'Ana García',
'email': 'ana@email.com',
'edad': 28,
});
// READ - Leer todos los registros
final usuarios = await db.read('usuarios');
// UPDATE - Actualizar registro
final actualizado = await db.update('usuarios', usuarioId, {
'edad': 29,
});
// DELETE - Eliminar registro
final eliminado = await db.delete('usuarios', usuarioId);
Nota: todos los métodos son asíncronos y pueden lanzar
RobleApiExceptionen caso de error de red o respuesta no esperada. Usatry/catchalrededor de tus llamadas.
� API (resumen) #
Los métodos disponibles en la API pública del paquete son los siguientes (firma orientativa):
Future<Map<String, dynamic>> register({required String email, required String password, required String name})Future<Map<String, dynamic>> login({required String email, required String password})Future<void> logout({required String accessToken})Future<Map<String, dynamic>> create(String tableName, Map<String, dynamic> data)— devuelve el registro insertado o la respuesta del servidor.Future<List<Map<String, dynamic>>> read(String tableName, {Map<String, dynamic>? filters})Future<Map<String, dynamic>> update(String tableName, dynamic id, Map<String, dynamic> data)Future<Map<String, dynamic>> delete(String tableName, dynamic id)Future<void> createTable(String tableName, List<Map<String, dynamic>> columns)— helper para crear tablas (si el backend lo permite).Future<dynamic> getTableData(String tableName)— retorna datos de esquema/tabla.
Estos métodos suelen devolver Map<String, dynamic> o List<Map<String, dynamic>> según el endpoint. Consulta el contrato de tu backend Roble para detalles específicos del formato.
⚙️ Configuración #
Usa RobleApiConfig para configurar las URLs/base headers:
const cfg = RobleApiConfig(
dataUrl: 'https://tu-api.com/database/tu-proyecto',
authUrl: 'https://tu-api.com/auth/tu-proyecto',
// authHeaders: {'X-Api-Key': 'xxx'},
// dataHeaders: {'X-Client': 'mi-app'},
);
Para pruebas puedes inyectar un http.Client mock (la implementación interna permite pasar un cliente para tests).
🛡️ Manejo de errores #
El paquete lanza RobleApiException cuando hay problemas de red, timeout o respuestas con errores del servidor. Ejemplo:
try {
final session = await db.login(email: 'a', password: 'b');
} on RobleApiException catch (e) {
// Mostrar mensaje al usuario
print('Error Roble API: ${e.message}');
} catch (e) {
// Errores inesperados
print('Error inesperado: $e');
}
🧪 Tests y desarrollo #
- Para pruebas unitarias puedes inyectar un cliente HTTP mock (por ejemplo con
http/testing.dartomockito). - Asegúrate de no exponer tokens en logs en producción.
🛠️ Contribuciones #
Las contribuciones son bienvenidas. Si encuentras un bug o quieres proponer una mejora:
- Abre un issue describiendo el problema o la propuesta.
- Crea un fork, desarrolla tu cambio en una rama y abre un Pull Request.
- Añade pruebas cuando sea posible y actualiza la documentación si el API cambia.
Guidelines:
- Mantén el estilo idiomático de Dart/Flutter y escribe tests para lógica no trivial.
- Evita cambios rompientes en la API pública sin una clara justificación y versionado.
📝 Licencia #
Este proyecto se distribuye bajo la licencia MIT — si quieres otra licencia, házmelo saber.
Resumen #
roble_api_database es un cliente ligero para Flutter que simplifica las peticiones HTTPS hacia la plataforma Roble. No abstrae la lógica de negocio del backend: su objetivo es facilitar el consumo de endpoints estandarizados (auth + CRUD) con manejo consistente de errores y facilidad para testing.
¡Las contribuciones y mejoras son muy bienvenidas! 🚀