Primero vamos a presentar lo que es esto para dummies : En definitiva es un servicio web en el lado del backend. Esta aplicación tendremos una serie de rutas/métodos configurados, que hacen ciertas funcionalidades, interacción con la base de datos, lógica, etc. que puede ser consumido mediante el protocolo http por cualquier cliente que entienda el método http. Normalmente, estas Api devuelven los datos en xml o json, aunq,ue ultimamente lo general es que lo hagan en json, porque es una información mejor organizada y que pesa menos por lo que es mas fácil enviar o recibir información en ese formato.
Es recomendable aprender a hacer api rest porque son muy desarrolladas hoy en día, ya que, por ejemplo las apps movil están muy en auge, y estas por lo general suelen consumir apis rest. Además la misma api se puede reutilizar para la app movil la aplicación web etc por lo que es muy comodo.
Bien, dada una breve explicación comenzamos, como primer paso vamos a tener que tener instalado :
java(jdk), Spring, maven o gradle (usaremos maven aqui), y en mi caso Tomcat pero vale jetty o undertow, y por ultimo un sistema de gestion de base de datos (usaremos psotgeSQL, recomiedo pgadmin para crear la base de datos y poder verla en entorno gráfico para que sea aun mas sencillo ).
Para empezar, vamos a tratar de hacerlo de la manera mas cómodo posible y que pueda hacer cualquier, asi que crearemos el proyecto en https://start.spring.io con la siguiente configuración o a gusto de cada uno.
Ahora importaremos el proyecto en nuestro ide, en mi caso Eclipse. Y deberiamos tener un pom ya configurado con las dependencias necesarias. Seguramente, os de algún tipo de error en la primera linea del pom sin nigun tipo de sentido, pues bien la manera de corregirlo, es con cualquiera de las dos formas que estan en amarillo, cambiado la version o añadiendo esa propiedad tambien en amarillo, con hacer una de las dos debería bastar.
Ahora crearemos nuestra primera entidad user, aquí estamos usando anotaciones de hibernate para que por arte de magia nos cree la BD, por lo que es muy cómodo si no teneis mucha destreza haciendo todo esto de forma manual, cabe decir que la generación del id depende de SGDB que hayais escogido, algunos utilizan estrategias diferentes a psql. Esto es una versión muy básica, y recomiendo mirar las anotacinoes para las relaciones y para otras cosas que puedan hacer falta a la hora de hacer una de verdad.(añadir getters y setters que no se ven en la imagen) Vemos además que lleva la anotacion @Entity para indentificarlo como entidad(tabla)
Ahora procedemos a configurar el archivo example\src\main\resources\application.properties para que estas anotaciones puedan crearnos la tabla user.
Ahora si todo ha ido bien podemos ejecutar el proyecto con mvn spring-boot:run y veremos como se crea todo lo que hemos indicado con las anotaciones y se inicia la aplicacion.
Bien, ahora procederemos a crear el Dao de nuestro User, y el servicio. Por que separar nuestro backend en capas?
Lo que conseguimos con esto, es separar cada funcionalidad concreta (acceso a datos, logica de negocio etc), con lo que se pueden desarrollar paralelamente, y conseguimos una abstracción, que nos permite no depender de como este implementada la capa de abajo, por lo tanto si se cambia la base da datos por ejemplo solo habría que cambiar el driver o la capa y todo lo demas seguiría funcionando igual por que no saben como esta implementada esa capa, solo conocen la interfaz de funciones que pueden ejecutar de cada capa inmediatamente inferior.
DAO (data access object) : el DAO proporcionará los métodos necesarios para insertar, actualizar, borrar y consultar la información; por otra parte, la capa de negocio solo se preocupa por lógica de negocio y utiliza el DAO para interactuar con la fuente de datos.
Vemos que lleva la anotacion de spring @Repository para identificarlo como DAO
Service: El servicio se encarga de todas las operaciones de la lógica de negocio llamando a a los DAOs. Aquí lo optimo sería hacer una interfaz como en el dao e implementarla sin que la capa superior tenga que saber como esta implementado el servicio. vemos la anotación @Service para que spring sepa que es un servicio.
Y por último vamos a crear lo que hablamos al principio, nuestras rutas/métodos que son los que consumirán los clientes.
Vemos la anotacion @RestController y RequestMapping donde indicamos la url de nuestra api.
Ahora pondré unos ejemplos con postman para que veáis como se ejecuta y que funciona correctamente.
Para acabar dejo la estructura del proyecto para que veais como esta organizado.
Bueno, como vemos funciona y ahora podríamos crear una aplicación web que consumiera nuestra api, después de añadirle las funcionalidades que quisieramos.
Espero que os haya gustado, y que le sirva a alguien que quiera empezar a hacer cosas de estas, no he profundizado mucho en la mayoría de cosas, pero siempre podéis buscarlas por vuestra cuenta o igual algún día subo otra parte hablando mas en profundidad sobre alguna parte o enseñando a hacer mas cosas.
Es recomendable aprender a hacer api rest porque son muy desarrolladas hoy en día, ya que, por ejemplo las apps movil están muy en auge, y estas por lo general suelen consumir apis rest. Además la misma api se puede reutilizar para la app movil la aplicación web etc por lo que es muy comodo.
Bien, dada una breve explicación comenzamos, como primer paso vamos a tener que tener instalado :
java(jdk), Spring, maven o gradle (usaremos maven aqui), y en mi caso Tomcat pero vale jetty o undertow, y por ultimo un sistema de gestion de base de datos (usaremos psotgeSQL, recomiedo pgadmin para crear la base de datos y poder verla en entorno gráfico para que sea aun mas sencillo ).
Para empezar, vamos a tratar de hacerlo de la manera mas cómodo posible y que pueda hacer cualquier, asi que crearemos el proyecto en https://start.spring.io con la siguiente configuración o a gusto de cada uno.
Ahora importaremos el proyecto en nuestro ide, en mi caso Eclipse. Y deberiamos tener un pom ya configurado con las dependencias necesarias. Seguramente, os de algún tipo de error en la primera linea del pom sin nigun tipo de sentido, pues bien la manera de corregirlo, es con cualquiera de las dos formas que estan en amarillo, cambiado la version o añadiendo esa propiedad tambien en amarillo, con hacer una de las dos debería bastar.
Ahora crearemos nuestra primera entidad user, aquí estamos usando anotaciones de hibernate para que por arte de magia nos cree la BD, por lo que es muy cómodo si no teneis mucha destreza haciendo todo esto de forma manual, cabe decir que la generación del id depende de SGDB que hayais escogido, algunos utilizan estrategias diferentes a psql. Esto es una versión muy básica, y recomiendo mirar las anotacinoes para las relaciones y para otras cosas que puedan hacer falta a la hora de hacer una de verdad.(añadir getters y setters que no se ven en la imagen) Vemos además que lleva la anotacion @Entity para indentificarlo como entidad(tabla)
Ahora procedemos a configurar el archivo example\src\main\resources\application.properties para que estas anotaciones puedan crearnos la tabla user.
Ahora si todo ha ido bien podemos ejecutar el proyecto con mvn spring-boot:run y veremos como se crea todo lo que hemos indicado con las anotaciones y se inicia la aplicacion.
Bien, ahora procederemos a crear el Dao de nuestro User, y el servicio. Por que separar nuestro backend en capas?
Lo que conseguimos con esto, es separar cada funcionalidad concreta (acceso a datos, logica de negocio etc), con lo que se pueden desarrollar paralelamente, y conseguimos una abstracción, que nos permite no depender de como este implementada la capa de abajo, por lo tanto si se cambia la base da datos por ejemplo solo habría que cambiar el driver o la capa y todo lo demas seguiría funcionando igual por que no saben como esta implementada esa capa, solo conocen la interfaz de funciones que pueden ejecutar de cada capa inmediatamente inferior.
DAO (data access object) : el DAO proporcionará los métodos necesarios para insertar, actualizar, borrar y consultar la información; por otra parte, la capa de negocio solo se preocupa por lógica de negocio y utiliza el DAO para interactuar con la fuente de datos.
Vemos que lleva la anotacion de spring @Repository para identificarlo como DAO
Service: El servicio se encarga de todas las operaciones de la lógica de negocio llamando a a los DAOs. Aquí lo optimo sería hacer una interfaz como en el dao e implementarla sin que la capa superior tenga que saber como esta implementado el servicio. vemos la anotación @Service para que spring sepa que es un servicio.
Y por último vamos a crear lo que hablamos al principio, nuestras rutas/métodos que son los que consumirán los clientes.
Vemos la anotacion @RestController y RequestMapping donde indicamos la url de nuestra api.
Ahora pondré unos ejemplos con postman para que veáis como se ejecuta y que funciona correctamente.
Para acabar dejo la estructura del proyecto para que veais como esta organizado.
Bueno, como vemos funciona y ahora podríamos crear una aplicación web que consumiera nuestra api, después de añadirle las funcionalidades que quisieramos.
Espero que os haya gustado, y que le sirva a alguien que quiera empezar a hacer cosas de estas, no he profundizado mucho en la mayoría de cosas, pero siempre podéis buscarlas por vuestra cuenta o igual algún día subo otra parte hablando mas en profundidad sobre alguna parte o enseñando a hacer mas cosas.
Adjuntos
Última edición: