{"id":12651,"date":"2025-08-18T09:00:00","date_gmt":"2025-08-18T07:00:00","guid":{"rendered":"https:\/\/wata.es\/?p=12651"},"modified":"2025-06-06T15:40:58","modified_gmt":"2025-06-06T13:40:58","slug":"crear-un-servidor-rest-con-spring-boot","status":"publish","type":"post","link":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/","title":{"rendered":"Crear un servidor REST con Spring Boot"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Cuando arrancamos un proyecto nuevo, la configuraci\u00f3n inicial del backend puede resultar algo compleja y llevar m\u00e1s tiempo del deseado. En este art\u00edculo te ense\u00f1amos una forma sencilla de montar un servidor REST con Java y Spring Boot.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Introducci\u00f3n<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En WATA Factory usamos Java de forma bastante habitual, tanto en proyectos propios como en los de nuestros clientes. A pesar de (o quiz\u00e1 gracias a) sus m\u00e1s de 25 a\u00f1os de historia, Java sigue siendo un lenguaje ampliamente utilizado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque hoy en d\u00eda hay alternativas mejores para el frontend \u2014como Angular (con TypeScript), React (con JavaScript) o Flutter (con Dart)\u2014, Java sigue siendo una de las opciones m\u00e1s s\u00f3lidas para el desarrollo del backend. De hecho, para aplicaciones grandes a nivel empresarial, sigue siendo pr\u00e1cticamente el est\u00e1ndar del sector.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Evidentemente, nadie empieza una aplicaci\u00f3n desde cero sin apoyarse en frameworks. En Java hay varios, y elegir el m\u00e1s adecuado depende de los requisitos del proyecto:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Jakarta EE<\/strong> (antes Java EE): para aplicaciones empresariales de gran escala<\/li>\n\n\n\n<li><strong>Hibernate<\/strong>: framework de mapeo objeto-relacional (ORM), simplifica el trabajo con bases de datos usando JPA<\/li>\n\n\n\n<li><strong>Quarkus<\/strong>: ideal para cloud y microservicios, muy ligero<\/li>\n\n\n\n<li><strong>Spring<\/strong>: probablemente el m\u00e1s popular, muy usado en microservicios y apps REST<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo nos vamos a centrar en Spring, m\u00e1s concretamente en <strong>Spring Boot<\/strong>, que se basa en Spring pero est\u00e1 dise\u00f1ado para simplificar el desarrollo de aplicaciones independientes y listas para producci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>\u00bfPor qu\u00e9 Spring Boot?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Antes, al empezar una aplicaci\u00f3n desde cero con Java EE o con Spring a secas, era necesario configurar muchas cosas a mano y escribir bastante c\u00f3digo repetitivo. Adem\u00e1s de gestionar las dependencias y asegurarse de que todo funcionaba, tambi\u00e9n hab\u00eda que desplegar la aplicaci\u00f3n en un servidor, lo cual pod\u00eda complicar a\u00fan m\u00e1s las cosas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para proyectos grandes, esa configuraci\u00f3n detallada puede estar justificada. Pero en proyectos m\u00e1s peque\u00f1os, todo ese trabajo es un lastre innecesario.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ah\u00ed es donde entra Spring Boot. Su objetivo es facilitar el desarrollo de aplicaciones independientes y preparadas para producci\u00f3n. \u00bfC\u00f3mo lo consigue? Aplicando el principio de <strong>\u201cConvenci\u00f3n sobre configuraci\u00f3n\u201d<\/strong> y eliminando la necesidad de configuraciones complejas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Convenci\u00f3n sobre configuraci\u00f3n<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este principio significa que Spring Boot ya viene con valores por defecto razonables para muchas cosas que normalmente habr\u00eda que configurar a mano. Por ejemplo, incluye un servidor Tomcat embebido listo para usar, sin que tengas que tocar nada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n detecta autom\u00e1ticamente las dependencias y configura los componentes necesarios seg\u00fan lo que encuentre en el classpath. As\u00ed se reduce mucho el c\u00f3digo repetitivo y se puede empezar a ser productivo mucho antes.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Spring Boot Initializr<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una herramienta muy \u00fatil de Spring Boot para empezar con buen pie es el <strong>Spring Boot Initializr<\/strong>. Es una web que permite configurar y generar un proyecto completo en pocos clics, evitando la configuraci\u00f3n manual y d\u00e1ndote una estructura lista para usar.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Crear una aplicaci\u00f3n de prueba<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a crear una aplicaci\u00f3n sencilla con Spring Boot usando el Initializr.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ve a <a href=\"https:\/\/start.spring.io\/\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">https:\/\/start.spring.io\/<br><\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"485\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES.png\" alt=\"Captura de pantalla de la interfaz de Spring Boot para crear un nuevo proyecto, incluyendo opciones de configuraci\u00f3n como metadatos, dependencias y herramientas de compilaci\u00f3n\" class=\"wp-image-12613\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES.png 937w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES-300x155.png 300w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES-768x398.png 768w\" sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES.png\" data-fancybox=\"wpcp-wp-img-12613\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-1-ES-300x155.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Elige el sistema de gesti\u00f3n de proyectos. Como vamos a usar Java, elegimos <strong>Maven<\/strong> (tambi\u00e9n se puede usar Gradle, que es menos verboso y m\u00e1s flexible, pero Maven es m\u00e1s probado y tiene plugins para todo).<\/li>\n\n\n\n<li>Selecciona el lenguaje: Java.<\/li>\n\n\n\n<li>Selecciona la versi\u00f3n de Spring Boot. Por defecto te propone la versi\u00f3n estable m\u00e1s reciente, que suele ser la mejor opci\u00f3n.<\/li>\n\n\n\n<li>Rellena los metadatos. Para esta demo, puedes dejar los valores por defecto.<\/li>\n\n\n\n<li>Elige el tipo de empaquetado: seleccionamos <strong>JAR<\/strong>, lo que generar\u00e1 un archivo ejecutable.<\/li>\n\n\n\n<li>Elige la versi\u00f3n de Java que tengas instalada.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora viene lo m\u00e1s interesante: en el lado derecho, pulsa en <strong>\u201cAdd Dependencies\u201d<\/strong>. Aqu\u00ed puedes a\u00f1adir todas las dependencias necesarias sin tener que buscar en Maven Central. Cada una viene con una breve descripci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"470\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES.png\" alt=\"Captura de pantalla de la selecci\u00f3n de dependencias en Spring Boot, donde se eligen librer\u00edas como Spring Web, Spring Data JPA y H2 Database\" class=\"wp-image-12616\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES.png 977w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES-300x144.png 300w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES-768x369.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES.png\" data-fancybox=\"wpcp-wp-img-12616\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-2-ES-300x144.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Para nuestra demo, seleccionamos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Spring Web<\/strong>: para crear endpoints REST f\u00e1cilmente. Incluye Tomcat embebido por defecto.<\/li>\n\n\n\n<li><strong>Spring Boot DevTools<\/strong>: herramientas \u00fatiles para desarrollo como recarga autom\u00e1tica o arranque m\u00e1s r\u00e1pido.<\/li>\n\n\n\n<li><strong>Lombok<\/strong>: evita tener que escribir setters y getters a mano.<\/li>\n\n\n\n<li><strong>Spring Data JPA<\/strong>: conectividad con bases de datos usando JPA.<\/li>\n\n\n\n<li><strong>H2 Database<\/strong>: base de datos en memoria para hacer pruebas r\u00e1pidas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Haz clic en <strong>\u201cGenerate\u201d<\/strong> para descargar el proyecto en un archivo .zip. Descompr\u00edmelo y \u00e1brelo con tu IDE favorito. Nosotros usaremos IntelliJ.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El Initializr habr\u00e1 generado varios archivos y carpetas, pero los m\u00e1s importantes son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>src\/main\/java\/com\/example\/demo\/DemoApplication.java: clase principal de la app. Ejecuta este archivo para arrancarla.<\/li>\n\n\n\n<li>src\/main\/resources\/application.properties: archivo de configuraci\u00f3n. Tambi\u00e9n se puede usar YAML.<\/li>\n\n\n\n<li>pom.xml: aqu\u00ed se gestionan las dependencias y los plugins de compilaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Crear el primer endpoint<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Con todo preparado, vamos a crear un endpoint muy simple que solo devuelve un texto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un archivo nuevo en el mismo paquete que DemoApplication.java y ll\u00e1malo HelloWataController.java, con este contenido:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>package com.example.demo;\n\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\n@RequestMapping(\"\/hello\")\npublic class HelloWataController {\n\n    @GetMapping\n    public String sayHello() {\n        return \"Hello WATA Factory!\";\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Y ya est\u00e1! Ejecuta DemoApplication.java para arrancar la aplicaci\u00f3n (puede que tengas que hacer un clean e install de Maven antes).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Abre el navegador y entra en <a href=\"http:\/\/localhost:8080\/hello\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:8080\/hello<\/a>. Deber\u00edas ver el texto \u201cHello WATA Factory!\u201d en pantalla.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A\u00f1adir una base de datos<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora vamos a a\u00f1adir soporte para base de datos. Por eso elegimos H2 en el Initializr. Esta base es en memoria, as\u00ed que se borra cada vez que cierres la app, pero el proceso es el mismo para cualquier base SQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a leer datos de una base de libros. Primero, a\u00f1ade esto en application.properties:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.application.name=demo\n\nspring.h2.console.enabled=true\nspring.datasource.url=jdbc:h2:mem:testdb\nspring.datasource.driverClassName=org.h2.Driver\nspring.datasource.username=sa\nspring.datasource.password=password\nspring.jpa.database-platform=org.hibernate.dialect.H2Dialect\nspring.jpa.hibernate.ddl-auto=update\n\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Definir la entidad<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un paquete nuevo dentro de com.example.demo llamado book, y dentro un archivo Book.java con este contenido:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Entity\n@Getter\n@Setter\npublic class Book {\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private Long id;\n    private String title;\n    private String author;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta clase representa la tabla book. Las anotaciones de Lombok (@Getter, @Setter) generan autom\u00e1ticamente los m\u00e9todos correspondientes.Esta clase representa la tabla book. Las anotaciones de Lombok (@Getter, @Setter) generan autom\u00e1ticamente los m\u00e9todos correspondientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora crea el repositorio BookRepository.java:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public interface BookRepository extends JpaRepository&lt;Book, Long&gt; { }<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public interface BookRepository extends JpaRepository&lt;Book, Long&gt; { }<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Crear el servicio<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En una arquitectura en tres capas, no se accede directamente al repositorio desde el controlador. Se usa una capa intermedia de servicio. Crea BookService.java:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@Service\npublic class BookService {\n \n    @Autowired\n    private BookRepository bookRepository;\n \n    public List&lt;Book&gt; getAllBooks() {\n        return bookRepository.findAll();\n    }\n \n    public Book getBookById(Long id) {\n        return bookRepository.findById(id).orElse(null);\n    }\n \n    public void deleteBook(Long id) {\n        bookRepository.deleteById(id);\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Los m\u00e9todos de bookRepository ya funcionan sin necesidad de implementarlos, otro ejemplo del enfoque de Spring Boot: si sigues sus convenciones, todo encaja.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Crear el controlador<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos a exponer tres endpoints REST, uno para cada m\u00e9todo del servicio. Crea BookController.java:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@RestController\n@RequestMapping(\"\/api\/books\")\npublic class BookController {\n \n    @Autowired\n    private BookService bookService;\n \n    @GetMapping\n    public List&lt;Book&gt; getAllBooks() {\n        return bookService.getAllBooks();\n    }\n \n    @GetMapping(\"\/{id}\")\n    public Book getBookById(@PathVariable Long id) {\n        return bookService.getBookById(id);\n    }\n \n    @DeleteMapping(\"\/{id}\")\n    public void deleteBook(@PathVariable Long id) {\n        bookService.deleteBook(id);\n    }\n}\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>A\u00f1adir datos a la base de datos<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Arranca la app. Como la base es en memoria, se vac\u00eda al cerrar. Puedes a\u00f1adir datos manualmente entrando en <a href=\"http:\/\/localhost:8080\/h2-console\" target=\"_blank\" rel=\"noopener noreferrer nofollow\">http:\/\/localhost:8080\/h2-console<\/a> y ejecutando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INSERT INTO BOOK VALUES(1, 'George Orwell', '1984');\nINSERT INTO BOOK VALUES(2, 'J.R.R. Tolkien', 'The Lord of the Rings');\nINSERT INTO BOOK VALUES(3, 'Franz Kafka', 'Metamorphosis');\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfQuieres evitar a\u00f1adirlos a mano cada vez? Guarda estos INSERT en un archivo llamado <strong>data.sql<\/strong> en <strong>src\/main\/resources,<\/strong> y cambia la URL en <strong>application.properties<\/strong> a:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.datasource.url=jdbc:h2:mem:testdb<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>spring.datasource.url=jdbc:h2:file:.\/data\/demo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed los inserts se ejecutar\u00e1n autom\u00e1ticamente al arrancar. Otro ejemplo m\u00e1s de c\u00f3mo Spring Boot te facilita la vida si usas sus convenciones.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Probar la aplicaci\u00f3n<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ya con datos en la base, toca probar los endpoints. Puedes usar Postman para lanzar peticiones GET y DELETE, o usar curl desde la l\u00ednea de comandos. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Llamar a http:\/\/localhost:8080\/api\/books devolver\u00e1 todos los libros.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"485\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES.png\" alt=\"Interfaz de Postman enviando una solicitud GET a un endpoint REST de Spring Boot para obtener una lista de todos los libros desde el backend\" class=\"wp-image-12619\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES.png 977w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES-300x149.png 300w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES-768x381.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES.png\" data-fancybox=\"wpcp-wp-img-12619\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-3-ES-300x149.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Si haces un GET a http:\/\/localhost:8080\/api\/books\/2, obtendr\u00e1s solo el libro con ID 2.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"306\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES.png\" alt=\"Interfaz de Postman mostrando el resultado de una solicitud GET a un endpoint REST de Spring Boot que devuelve los detalles de un libro por su ID\" class=\"wp-image-12622\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES.png 977w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES-300x94.png 300w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES-768x241.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES.png\" data-fancybox=\"wpcp-wp-img-12622\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-4-ES-300x94.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Haz una petici\u00f3n DELETE a \/api\/books\/2 y luego vuelve a listar todos los libros para comprobar que se ha borrado correctamente.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"245\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES.png\" alt=\"Aplicaci\u00f3n Postman mostrando una solicitud DELETE enviada a un endpoint REST de Spring Boot para eliminar un registro espec\u00edfico de libro de la base de datos\" class=\"wp-image-12625\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES.png 977w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES-300x75.png 300w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES-768x193.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES.png\" data-fancybox=\"wpcp-wp-img-12625\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-5-ES-300x75.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><div class=\"wpcp-wp-lightbox-host wpcp-advanced-image-lightbox-icon-hover\"><a class=\"wpcp-wp-lightbox-image-link\" href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES.png\" data-wpcp-wp-lb-image=\"1\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"408\" src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES.png\" alt=\"Uso de Postman para probar una API REST de Spring Boot mediante una solicitud GET que recupera todos los libros, mostrando la respuesta JSON en la interfaz\" class=\"wp-image-12628\" srcset=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES.png 977w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES-300x125.png 300w, https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES-768x321.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><a href=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES.png\" data-fancybox=\"wpcp-wp-img-12628\" class=\"wpcp-lightbox-trigger wpcp-advanced-image-lightbox-icon wpcp-position-top-right wpcp-advanced-image-lightbox-icon-hover wpcp-global-lightbox-icon wpcp-lightbox-icon--global wpcp-lb-icon-style-default\" data-wpcp-lb-icon-source=\"global\" aria-label=\"Open image in lightbox\" data-thumb-src=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/SpringBoot-screen-6-ES-300x125.png\" data-wpcp-lb-single=\"1\"><span class=\"wpcp-icon-container\"><svg viewBox=\"0 0 20 20\"><path d=\"M17.6585 16.025L14.2437 12.6198C15.1716 11.3338 15.6121 9.7613 15.4871 8.1819C15.362 6.60251 14.6795 5.11847 13.5607 3.99351C12.936 3.36206 12.1916 2.86066 11.3709 2.51845C10.5502 2.17623 9.66952 2 8.77995 2C7.89039 2 7.00969 2.17623 6.18899 2.51845C5.36829 2.86066 4.62395 3.36206 3.99919 3.99351C3.36594 4.61649 2.86312 5.35871 2.51992 6.17708C2.17673 6.99545 2 7.87365 2 8.76068C2 9.64772 2.17673 10.5259 2.51992 11.3443C2.86312 12.1627 3.36594 12.9049 3.99919 13.5279C5.11957 14.6901 6.62279 15.4103 8.23285 15.5562C9.84291 15.7022 11.4517 15.2641 12.7639 14.3224L16.1788 17.7275C16.3849 17.9034 16.6473 18 16.9186 18C17.1899 18 17.4523 17.9034 17.6585 17.7275C18.1138 17.16 18.1138 16.5925 17.6585 16.025ZM5.59278 12.0523C5.16258 11.6298 4.82094 11.1263 4.58774 10.5709C4.35455 10.0156 4.23446 9.41951 4.23446 8.81744C4.23446 8.21536 4.35455 7.6193 4.58774 7.06394C4.82094 6.50859 5.16258 6.00503 5.59278 5.58257C6.01644 5.15359 6.52144 4.81292 7.07838 4.58039C7.63532 4.34786 8.23308 4.22811 8.83687 4.22811C9.44066 4.22811 10.0384 4.34786 10.5954 4.58039C11.1523 4.81292 11.6573 5.15359 12.081 5.58257C12.5112 6.00503 12.8528 6.50859 13.086 7.06394C13.3192 7.6193 13.4393 8.21536 13.4393 8.81744C13.4393 9.41951 13.3192 10.0156 13.086 10.5709C12.8528 11.1263 12.5112 11.6298 12.081 12.0523C11.6573 12.4813 11.1523 12.822 10.5954 13.0545C10.0384 13.287 9.44066 13.4068 8.83687 13.4068C8.23308 13.4068 7.63532 13.287 7.07838 13.0545C6.52144 12.822 6.01644 12.4813 5.59278 12.0523Z\" \/><\/svg><\/span><\/a><\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a1Y listo! Todo funciona como debe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusi\u00f3n<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En WATA Factory seguimos confiando en Java para nuestros backends, tanto internos como de cliente. Aunque a veces se le acusa de ser m\u00e1s pesado de configurar que alternativas como NodeJS, con este art\u00edculo quer\u00edamos mostrar que con muy poco c\u00f3digo se puede tener un servidor funcionando y empezar a trabajar desde el minuto uno.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando arrancamos un proyecto nuevo, la configuraci\u00f3n inicial del backend puede resultar algo compleja y llevar m\u00e1s tiempo del deseado. En este art\u00edculo te ense\u00f1amos una forma sencilla de montar un servidor REST con Java y Spring Boot.<\/p>\n","protected":false},"author":46,"featured_media":12584,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[89],"tags":[],"class_list":["post-12651","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-noticias"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Crear un servidor REST con Spring Boot - WATA Factory<\/title>\n<meta name=\"description\" content=\"Aprende a crear servidores REST con Spring Boot de forma r\u00e1pida y sencilla. Gu\u00eda paso a paso para desarrolladores Java. WATA Factory.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Crear un servidor REST con Spring Boot - WATA Factory\" \/>\n<meta property=\"og:description\" content=\"Aprende a crear servidores REST con Spring Boot de forma r\u00e1pida y sencilla. Gu\u00eda paso a paso para desarrolladores Java. WATA Factory.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/\" \/>\n<meta property=\"og:site_name\" content=\"WATA Factory\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/watafactory\/\" \/>\n<meta property=\"article:published_time\" content=\"2025-08-18T07:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1440\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Oliver K\u00f6hler\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@watafactory\" \/>\n<meta name=\"twitter:site\" content=\"@watafactory\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oliver K\u00f6hler\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/\"},\"author\":{\"name\":\"Oliver K\u00f6hler\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#\\\/schema\\\/person\\\/cdf6ce448b7b97a74b3a4646c462a30f\"},\"headline\":\"Crear un servidor REST con Spring Boot\",\"datePublished\":\"2025-08-18T07:00:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/\"},\"wordCount\":1365,\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/rocket-scaled.jpg\",\"articleSection\":[\"Noticias\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/\",\"name\":\"Crear un servidor REST con Spring Boot - WATA Factory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/rocket-scaled.jpg\",\"datePublished\":\"2025-08-18T07:00:00+00:00\",\"description\":\"Aprende a crear servidores REST con Spring Boot de forma r\u00e1pida y sencilla. Gu\u00eda paso a paso para desarrolladores Java. WATA Factory.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#primaryimage\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/rocket-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/rocket-scaled.jpg\",\"width\":2560,\"height\":1440,\"caption\":\"Illustration of a rocket about to launch with the WATA Factory logo, representing the well-planned start of a software project before development begins.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/crear-un-servidor-rest-con-spring-boot\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/wata.es\\\/es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Crear un servidor REST con Spring Boot\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#website\",\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/\",\"name\":\"WATA Factory\",\"description\":\"IT Consulting &amp; Outsourcing for your company\",\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wata.es\\\/es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#organization\",\"name\":\"WATA Factory\",\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"contentUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2019\\\/12\\\/logowata.png\",\"width\":688,\"height\":176,\"caption\":\"WATA Factory\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/watafactory\\\/\",\"https:\\\/\\\/x.com\\\/watafactory\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/wata\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/wata.es\\\/es\\\/#\\\/schema\\\/person\\\/cdf6ce448b7b97a74b3a4646c462a30f\",\"name\":\"Oliver K\u00f6hler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g\",\"caption\":\"Oliver K\u00f6hler\"},\"url\":\"https:\\\/\\\/wata.es\\\/es\\\/author\\\/o-koehler\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Crear un servidor REST con Spring Boot - WATA Factory","description":"Aprende a crear servidores REST con Spring Boot de forma r\u00e1pida y sencilla. Gu\u00eda paso a paso para desarrolladores Java. WATA Factory.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/","og_locale":"es_ES","og_type":"article","og_title":"Crear un servidor REST con Spring Boot - WATA Factory","og_description":"Aprende a crear servidores REST con Spring Boot de forma r\u00e1pida y sencilla. Gu\u00eda paso a paso para desarrolladores Java. WATA Factory.","og_url":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/","og_site_name":"WATA Factory","article_publisher":"https:\/\/www.facebook.com\/watafactory\/","article_published_time":"2025-08-18T07:00:00+00:00","og_image":[{"width":2560,"height":1440,"url":"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg","type":"image\/jpeg"}],"author":"Oliver K\u00f6hler","twitter_card":"summary_large_image","twitter_creator":"@watafactory","twitter_site":"@watafactory","twitter_misc":{"Escrito por":"Oliver K\u00f6hler","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#article","isPartOf":{"@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/"},"author":{"name":"Oliver K\u00f6hler","@id":"https:\/\/wata.es\/es\/#\/schema\/person\/cdf6ce448b7b97a74b3a4646c462a30f"},"headline":"Crear un servidor REST con Spring Boot","datePublished":"2025-08-18T07:00:00+00:00","mainEntityOfPage":{"@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/"},"wordCount":1365,"publisher":{"@id":"https:\/\/wata.es\/es\/#organization"},"image":{"@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg","articleSection":["Noticias"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/","url":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/","name":"Crear un servidor REST con Spring Boot - WATA Factory","isPartOf":{"@id":"https:\/\/wata.es\/es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#primaryimage"},"image":{"@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg","datePublished":"2025-08-18T07:00:00+00:00","description":"Aprende a crear servidores REST con Spring Boot de forma r\u00e1pida y sencilla. Gu\u00eda paso a paso para desarrolladores Java. WATA Factory.","breadcrumb":{"@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#primaryimage","url":"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg","width":2560,"height":1440,"caption":"Illustration of a rocket about to launch with the WATA Factory logo, representing the well-planned start of a software project before development begins."},{"@type":"BreadcrumbList","@id":"https:\/\/wata.es\/es\/crear-un-servidor-rest-con-spring-boot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wata.es\/es\/"},{"@type":"ListItem","position":2,"name":"Crear un servidor REST con Spring Boot"}]},{"@type":"WebSite","@id":"https:\/\/wata.es\/es\/#website","url":"https:\/\/wata.es\/es\/","name":"WATA Factory","description":"IT Consulting &amp; Outsourcing for your company","publisher":{"@id":"https:\/\/wata.es\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wata.es\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/wata.es\/es\/#organization","name":"WATA Factory","url":"https:\/\/wata.es\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/es\/#\/schema\/logo\/image\/","url":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","contentUrl":"https:\/\/wata.es\/wp-content\/uploads\/2019\/12\/logowata.png","width":688,"height":176,"caption":"WATA Factory"},"image":{"@id":"https:\/\/wata.es\/es\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/watafactory\/","https:\/\/x.com\/watafactory","https:\/\/www.linkedin.com\/company\/wata\/"]},{"@type":"Person","@id":"https:\/\/wata.es\/es\/#\/schema\/person\/cdf6ce448b7b97a74b3a4646c462a30f","name":"Oliver K\u00f6hler","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b87b0ffa05bc8b5e1baa4b56a7e476c9f521d3409650e28cb67696d0653e40cb?s=96&d=mm&r=g","caption":"Oliver K\u00f6hler"},"url":"https:\/\/wata.es\/es\/author\/o-koehler\/"}]}},"_links":{"self":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/12651","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/comments?post=12651"}],"version-history":[{"count":5,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/12651\/revisions"}],"predecessor-version":[{"id":12671,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/posts\/12651\/revisions\/12671"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/media\/12584"}],"wp:attachment":[{"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/media?parent=12651"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/categories?post=12651"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wata.es\/es\/wp-json\/wp\/v2\/tags?post=12651"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}