Trabajo Fin de Grado
Servicio Web API REST sobre el Framework Spring, Hibernate, JSON Web Token y BBDD Oracle
Autor/es | Monago Ruiz, Alejandro |
Director | Sierra Collado, Antonio Jesús |
Departamento | Universidad de Sevilla. Departamento de Ingeniería Telemática |
Fecha de publicación | 2019 |
Fecha de depósito | 2019-10-07 |
Titulación | Universidad de Sevilla. Grado en Ingeniería de las Tecnologías de Telecomunicación |
Resumen | En el trabajo que se expone a continuación se ha desarrollado un servicio web API REST, éste ha sido realizado haciendo uso del lenguaje de programación JAVA, el cual es explotado por diversas tecnologías de gran relevancia ... En el trabajo que se expone a continuación se ha desarrollado un servicio web API REST, éste ha sido realizado haciendo uso del lenguaje de programación JAVA, el cual es explotado por diversas tecnologías de gran relevancia en el desarrollo web y que han sido aplicadas a este proyecto. REST (Representational State Transfer) es el modelo de transferencia de datos en el cual se basa esta implementación. Éste es un conjunto de principios de arquitectura para describir cualquier interfaz entre sistemas que utilice directamente HTTP para obtener datos o indicar la ejecución de operaciones sobre los datos, en cualquier formato (XML, JSON, etc.) y sin las abstracciones adicionales de los protocolos basados en patrones de intercambio de mensajes, como por ejemplo SOAP. En particular, REST hace uso del protocolo HTTP y del pequeño conjunto de operaciones definidas para el mismo (POST, GET, PUT y DELETE) a través de una sintaxis universal como son las URIs. Estas premisas son las que hacen de REST una arquitectura que presenta una gran escalabilidad y desacoplamiento para los sistemas que puedan hacer uso de ella. La estructura de este desarrollo ha sido realizada a través del software para la gestión y construcción de proyectos Maven. Éste se basa en patrones y estándares y trabaja con arquetipos, los cuales son configurables a través de su fichero POM. En este fichero reside la consiguración necesaria para gestionar librerías, compilar, empaquetar o generar la documentación del proyecto. Maven trabaja con las dependencias que son definidas en el POM, descargándolas y almacenándolas en un repositorio común a todos los proyectos que hagan uso del software, de esta manera se evita la duplicación de librerías y se consigue además el árbol de dependencias que necesite cada librería para su correcto funcionamiento. El modelado del proyecto está estructurado en capas diferenciadas (Fachada, negocio y datos) consiguiendo así desacoplar la funcionalidad de cada una de estas partes. Además, para cada uno de los servicios se han creado interfaces con la definición de sus métodos y sus correspondientes implementaciones por separado. La lógica interna de la aplicación recae sobre el Framework Spring, el cual es el encargado de escuchar las peticiones que lleguen al servicio web y dar una respuesta. Para ello se necesita tener configurado un servlet principal, llamado normalmente DispatcherServlet, que recibe todas las peticiones HTTP que llegan a la aplicación y distribuye los procesos para llevar cabo el flujo necesario para la generación de la respuesta. El servlet se apoya en un contenedor que se carga en tiempo de despliegue y que es configurado a través del fichero “application-context”. Este fichero es de tipo XML y en él se recogen en forma de bean todos los recursos de la aplicación. Cuando la aplicación sea desplegada, el framework leerá este fichero e instanciará todos aquellos objetos que así hayan sido definidos para su posterior uso en la aplicación. El framework además permite definir los bean en las propias clases a través de anotaciones, y llevará a cabo la creación y destrucción de las instancias de los objetos en relación a cómo se definan en el contexto. Para el acceso a los datos de la aplicación se ha añadido el framework de persistencia Hibernate, el cuál implementa la interfaz común JPA, que es una abstracción de JDBC que permite comunicar el modelo de objetos del aplicativo con el modelo de tablas de la base datos. Hibernate actúa de manera transparente al usuario y le aporta escalabilidad, eficiencia y facilidades a la hora de hacer consultas en la base de datos. Se ha usado además Criteria, que es una API creada por Hibernate y que permite construir las querys de base de datos absolutamente orientadas a objetos. Para almacenar los datos a los cuales accederá el Servicio Web se ha creado una base de datos ORACLE, haciendo uso de la versión 11.2. Oracle es un motor de base de datos relacional, multiplataforma y que puede ejecutarse en multitud de sistemas operativos: Linux, Mac, Windows, etc. Además, el encoding con el que se v ha configurado la base de datos es UTF8, el cual es capaz de representar cualquier carácter Unicode mediante símbolos de longitud variable e incluye la especificación ASCII. Para la implementación de la seguridad se ha escogido JSON Web Token(JWT), que es un estándar abierto basado en JSON para la generación de tokens de acceso. En la autenticación con token, el usuario se identifica bien con un usuario/contraseña o mediante una única clave y la aplicación web le devuelve una firma codificada que el usuario usará en las cabeceras de cada una de las peticiones HTTP. En el proyecto se usa HS512 como algoritmo de codificación. Haciendo uso de esta estructura y queriendo ejemplificarla, se ha dado forma a un servicio en línea orientado al ámbito académico, en el cual se definen difirentes recursos para la obtención de datos del alumnado y los centros. El usuario enviará peticiones acompañadas de JSON estructurados de la manera que exige el servicio y recibibirá una respuesta inmediata con la información que se solicita también en formato en JSON. In the work described below has developed a web service API REST, this has been done using the programming language JAVA, which is exploited by various technologies of great relevance in web development and have been applied ... In the work described below has developed a web service API REST, this has been done using the programming language JAVA, which is exploited by various technologies of great relevance in web development and have been applied to this project. REST (Representational State Transfer) is the data transfer model on which this implementation is based. This is a set of architectural principles to describe any interface between systems that directly uses HTTP to obtain data or indicate the execution of operations on the data, in any format (XML, JSON, etc.) and without the additional abstractions of protocols based on message exchange patterns, such as SOAP. In particular, REST makes use of the HTTP protocol and the small set of operations defined for it (POST, GET, PUT and DELETE) through a universal syntax such as URIs. These premises are what make REST an architecture that presents great scalability and decoupling for the systems that can make use of it. The structure of this service has been made through the software for the management and construction of Maven projects. It is based on patterns and standards and works with archetypes, which are configurable through its POM file. In this file resides the achievement necessary to manage libraries, compile, package or generate documentation. Maven works with the dependencies that are defined in the POM, downloading them and storing them in a repository common to all the projects that make use of the software, in this way the duplication of libraries is avoided and the dependencies tree that each library needs for its correct operation is also obtained. The modeling of the project is structured in differentiated layers (Façade, business and data) achieving this way to decouple the functionality of each one of these parts. In addition, for each of the services interfaces have been created with the definition of their methods and their corresponding implementations separately. The internal logic of the application falls on the Spring Framework, which is responsible for listening to the requests that arrive at the web service and give an answer. In order to do this, it is necessary to have configured a main servlet, normally called DispatcherServlet, which receives all the HTTP requests that arrive to the application and distributes the processes to carry out the necessary flow for the generation of the response. The servlet is supported by a container that is loaded at deployment time and that is configured through the "application-context" file. This file is of XML type and in it are collected in bean form all the resources of the application. When the application is deployed, the framework will read this file and instantiate all those objects that have been defined for later use in the application. The framework also allows to define the bean in the classes themselves through annotations, and will carry out the creation and destruction of the instances of the objects in relation to how they are defined in the context. For the access to the application data the HIBERNATE persistence framework has been added, which implements the common JPA interface, which is a JDBC abstraction that allows to communicate the objects model of the application with the tables model of the database. Hibernate acts transparently to the user and provides scalability, efficiency and ease when making queries in the database. Criteria has also been used, which is an API created by Hibernate and which allows the database queries to be built absolutely objectoriented. To store the data that the web service will access, an ORACLE database has been created, making use of version 11.2. Oracle is a relational, multiplatform database engine that can be run on a multitude of operating systems: Linux, Mac, Windows, etc. In addition, the encoding with which the database has been configured is UTF8, which is capable of representing any Unicode character using symbols of variable length and includes the ASCII specification. |
Cita | Monago Ruiz, A. (2019). Servicio Web API REST sobre el Framework Spring, Hibernate, JSON Web Token y BBDD Oracle. (Trabajo Fin de Grado Inédito). Universidad de Sevilla, Sevilla. |
Ficheros | Tamaño | Formato | Ver | Descripción |
---|---|---|---|---|
TFG-2380-MONAGO.pdf | 4.719Mb | [PDF] | Ver/ | |