Diseño e implementación de un Web API para el Sistema Interactivo de Desarrollo para el Web (SIDWeb)
Giancarlo Vera Rivera
Problema
Limitaciones en el acceso al sistema por medio de dispositivos móviles, dados los siguientes factores: Ancho de banda. Interacciones con el dispositivo.
Ausencia de interfaz de comunicación para propósitos de integración o intercambio de información.
Solución propuesta
Interfaz Web de comunicaciones que exponga funcionalidades críticas del sistema mediante un protocolo estándar de comunicaciones, el nombre asignado a esta interfaz es SIDWeb API.
Componentes de la solución
DoctrineSIDWeb APIMódulo de
Enrutamiento
SIDWeb BD
Directorio Espol
CAS Espol
Módulos SIDWeb
Framework Symfony
SOAP HTTP
REST BD DRIVER
APPAPP
Cliente SIDWeb API
Flujo de requisiciones
Módulos SIDWeb
Módulo SIDWeb API
Entorno Symfony
4
Módulo de enrutamiento
5
6
1 2
3
JSON vs. XML
Ejemplo XML:
<?xml version="1.0" encoding="ISO-8859-1"?><root> <vigentes> <anuncio> <anuncio_token>83b7e4297e31f767db921700b756d83bcbf2e469</anuncio_token> <anuncio_nombre>Anuncio #3 en curso de test</anuncio_nombre> <seccion_nombre>null</seccion_nombre> <anuncio_visible>true</anuncio_visible> <anuncio_disponible_desde>2012-02-02 00:00:00</anuncio_disponible_desde> <anuncio_disponible_hasta>2012-02-29 00:00:00</anuncio_disponible_hasta> <anuncio_descripcion><p>\r\n\t Descripcion anuncio #3:<\/p></anuncio_descripcion> </anuncio> </vigentes> <nodisponible></nodisponible> <recuperado></recuperado></root>
Caracteres usados: 667
JSON vs. XML
Ejemplo JSON:
{"vigente":[{"anuncio_token":"83b7e4297e31f767db921700b756d83bcbf2e469","anuncio_nombre":"Anuncio #3 en curso de test","seccion_nombre":null,"anuncio_visible":true,
"anuncio_disponible_desde":"2012-02-02 00:00:00", "anuncio_disponible_hasta":"2012-02-29 00:00:00", "anuncio_descripcion":"<p>\r\n\t Descripcion anuncio #3:<\/p>"}, "no_disponible":[], "recuperado":[]}
Caracteres usados: 411
JSON vs. XML
Para el ejemplo JSON utilizó 266 caracteres menos que XML para representar el mismo escenario.
Si para el mismo ejemplo existiesen dos anuncios la diferencia sería de 420 caracteres a favor de JSON.
Consideraciones seguridad
SIDWeb API utiliza canales seguros de comunicación, en los cuales la información intercambiada es encriptada y se realizan verificaciones de identidad por medio de certificados.
El framework Symfony, en el cual fue desarrollado el API, implementa mecanismos para evitar ataques al sistema.
Secuencia Genérica de Operaciones
SIDWeb API
Llamada al método
Informacion requerida (JSON)
comprobarParametros()
Doctrine
obtenerInformacion()
Información requerida
construirRespuestaJson()
App Cliente
comprobarTicketAcceso()
ticket válido
Pruebas – Consola
Pruebas – SIDWeb Móvil
Pruebas con usuarios
Perfiles: Se identificaron los usuarios con números del 1 al 5, los perfiles de los usuarios fueron: USR 1, 5: Estudiantes de ESPOL familiarizados
con el uso de SIDWeb. USR 2, 3: Administradores del sistema SIDWeb. USR 4: No era estudiante, sin familiaridad con el
uso del software SIDWeb, pero con experiencia en el uso de aplicaciones Web.
Pruebas con usuarios
Demostración de SIDWeb Móvil
Conclusiones y Recomendaciones Conclusiones:
Constatación de interacción con aplicaciones externas.
Se simplifico el desarrollo mediante el uso de frameworks.
El uso de canales seguro brinda un nivel adicional de protección de datos sensibles.
El uso de formatos de baja sobrecarga es ventajoso en el caso de aplicaciones con interacciones asíncronas o móviles.
Conclusiones y Recomendaciones Recomendaciones:
Dependiendo de la aplicación emplear tecnologías multiplataforma.
Reducir tiempo de corrección de errores mediante consulta de documentación y comunidades relacionadas con las tecnologías empleadas.
Utilización de mecanismos de encriptación para datos sensibles que son intercambiados en la red.
Demostración de SIDWeb Móvil
Usuario: test Password: test
Preguntas?