A continuación encontrarás traducido al Castellano el artículo escrito por Ezekiel Burke y publicado originalmente en el Blog oficial de Xojo.
Introducción
Al desarrollar aplicaciones con Xojo la elección del backend adecuado resulta crucial para la gestión eficiente de los datos. Generalmente los desarrolladores de Xojo tienden a utilizar bases de datos SQL como SQLite, MySQL o PostgreSQL para sus aplicaciones desktop, web y dirigidas a dispositivos móviles. Sin embargo, existe una alternativa que proporciona un enfoque más flexible y moderno en el desarrollo de backends: PocketBase.
PocketBase es un backend de código abierto perfecto para tu aplicación Xojo multiplataforma. Ofrece una API sencilla de usar, un panel de administración incorporado para gestionar los datos desde cualquier navegador Web. No es preciso utilizar ninguna otra herramienta como MySQL, Workbench o SQL Studio. En este artículo te explicaré de qué modo se compara con las bases de datos tradicionales y también como integrarla en un proyecto Xojo.
¿Por qué elegir PocketBase como Backend para tu app Xojo?
PocketBase es un backend auto-alojado y ligero diseñado para proporcionar flexibilidad y sencillez. A diferencia de las bases de datos SQL convencionales, que requieren de un servicio de backend separado o bien una capa de API, PocketBase supone una solución todo en uno que combina tanto la base de datos como la API.
Principales características:
- Base de datos embebida – Alimentada por SQLite, eliminando así la necesidad de usar un servidor de bases de datos por separado.
- Autenticación de usuario incluida – Soporta accesos mediante pares email/contraseña, OAuth2 y contraseñas de un solo uso (OTP) con una configuración mínima.
- Almacenamiento de archivos – Almacena y recupera los archivos de forma local o a través de S3.
- Compatibilidad multiplataforma – Funciona sobre macOS, Windows y Linux. Puede comunicarse mediante URLConnection, haciendo que resulte ideal para las plataformas desktop, Web y Mobile de Xojo.
- Despliegue sencillo – Un único archivo binario que puede auto-alojarse o desplegarse en cualquier parte con una configuración mínima.
Configurar PocketBase para una App Xojo
Para comenzar he simplificado algunos pasos a continuación. Si te encuentras que no puedes avanzar o requieres de unas instrucciones más detalladas, te recomiendo que eches un vistazo a la documentación.
Descarga PocketBase
Visita PocketBase y descarga la última versión para tu sistema operativo.
Extra los archivos en el directorio de tu proyecto.
Ejecutar PocketBase
Inicia el servidor de PocketBase navegando a la carpeta descomprimida, utilizando para ello una ventana del terminal.
Ejecuta el comando: ./pocketbase serve para iniciar el servidor.
Acceso al Panel de Administración
Abre http://127.0.0.1:8090/_/ en un navegador web y configura tu cuenta de administrador.
Añadir un Usuario
En el panel de administración de PocketBase, crea un nuevo registro en la colección de usuarios (las Colecciones son el equivalente a una tabla en SQL.)
Conecta Xojo con PocketBase
Ahora que tu servidor PocketBae está funcionando, integra la autenticación en tu app desktop de Xojo. En este ejemplo gestionaremos la autenticación en el evento Open de la ventana principal. Esto te mostrará la forma en la que Xojo interactúa con la API de autenticación de PocketBae.
Implementa la Petición de Conexión
Añade el siguiente código en el evento open de tu ventana principal:
Var userEmail As String = "email@email.com" Var userPassword As String = "MyPassword!" Var loginURL As String = "http://127.0.0.1:8090" + "/api/collections/users/auth-with-password" Var conn As New URLConnection conn.RequestHeader("Content-Type") = "application/json" Var loginPayload As String = "{""identity"":""" + userEmail + """,""password"":""" + userPassword + """}" conn.SetRequestContent(loginPayload, "application/json") Var loginResponse As String = conn.SendSync("POST", loginURL) Var jsonResponse As New JSONItem(loginResponse) Var userInfo As JSONItem = jsonResponse.Lookup("record", New JSONItem) Var userID As String = userInfo.Lookup("id", "") Var authToken As String = jsonResponse.Lookup("token", "") If authToken.Length > 0 Then MessageBox("Login successful! Welcome, User ID: " + userID) Else MessageBox("Login failed. Please check your credentials.") End If
Actualiza tus credenciales y URL
Sustituye userEmail y userPassword con las credenciales que hayas utilizado durante la creación del usuario en PocketBase. Igualmente, asegúrate de que loginURL se corresponde con tu instancia de PocketBase (sin /_/ al final).
Ejecuta la App
Ejecuta tu app de Xojo. Si la autenticación ha tenido éxito aparecerá un diálogo mostrando el ID del usuario. De lo contrario, verás un mensaje de error en el que se indicará que las credenciales no son correctas.
En resumen
En este artículo has podido configurar con éxito un servidor de PocketBae, creado un registro y también integrado la autenticación en tu app Xojo. PocketBase simplifica el desarrollo del backend mediante la gestión de la autenticación y el almacenamiento de todo tipo de datos sin necesidad de tener que usar una base de datos tradicional SQL.
Con PocketBae no hay necesidad de configurar complejas tablas, hashes de contraseñas o bien crear una API personalizada. Las Colecciones pueden gestionarse directamente desde la web mediante el panel de administración. Esto significa que puedes pasar menos tiempo gestionando la infraestructura y más centrándote en llevar tu app al mercado.
Para ayudarte a empezar he creado una colección de proyectos de ejemplo, y que puedes encontrar aquí:
Si quieres conversar sobre la forma en la que Iron Elephant Solutions ha utilizado Xojo y PocketBase en aplicaciones del mundo real, siéntete libre de contactar con nostros a través de nuestro sitio web o bien LinkedIn.