{"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>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>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>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>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>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>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>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>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>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>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>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>Vamos a crear una aplicaci\u00f3n sencilla con Spring Boot usando el Initializr.<\/p>\n\n\n\n<p>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\"><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\" \/><\/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>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\"><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\" \/><\/figure>\n\n\n\n<p>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>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>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>Con todo preparado, vamos a crear un endpoint muy simple que solo devuelve un texto.<\/p>\n\n\n\n<p>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>\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>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>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>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>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>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>Ahora crea el repositorio BookRepository.java:<\/p>\n\n\n\n<p>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>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><\/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>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>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>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>\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>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>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>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>Llamar a http:\/\/localhost:8080\/api\/books devolver\u00e1 todos los libros.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><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\" \/><\/figure>\n\n\n\n<p>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\"><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\" \/><\/figure>\n\n\n\n<p>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\"><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\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><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\" \/><\/figure>\n\n\n\n<p>\u00a1Y listo! Todo funciona como debe.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusi\u00f3n<\/strong><\/h2>\n\n\n\n<p>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 v27.3 - 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\/?p=12557\" \/>\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\/?p=12557\" \/>\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\\\/?p=12557#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=12557\"},\"author\":{\"name\":\"Oliver K\u00f6hler\",\"@id\":\"https:\\\/\\\/wata.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\\\/?p=12557\"},\"wordCount\":1365,\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=12557#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/wata.es\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/rocket-scaled.jpg\",\"articleSection\":[\"Noticias\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=12557\",\"url\":\"https:\\\/\\\/wata.es\\\/?p=12557\",\"name\":\"Crear un servidor REST con Spring Boot - WATA Factory\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=12557#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/wata.es\\\/?p=12557#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\\\/?p=12557#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/wata.es\\\/?p=12557\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.es\\\/?p=12557#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\\\/?p=12557#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\\\/#website\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"name\":\"WATA Factory\",\"description\":\"IT Consulting &amp; Outsourcing for your company\",\"publisher\":{\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/wata.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/wata.es\\\/#organization\",\"name\":\"WATA Factory\",\"url\":\"https:\\\/\\\/wata.es\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/wata.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\\\/#\\\/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\\\/#\\\/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\/?p=12557","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\/?p=12557","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\/?p=12557#article","isPartOf":{"@id":"https:\/\/wata.es\/?p=12557"},"author":{"name":"Oliver K\u00f6hler","@id":"https:\/\/wata.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\/?p=12557"},"wordCount":1365,"publisher":{"@id":"https:\/\/wata.es\/#organization"},"image":{"@id":"https:\/\/wata.es\/?p=12557#primaryimage"},"thumbnailUrl":"https:\/\/wata.es\/wp-content\/uploads\/2025\/06\/rocket-scaled.jpg","articleSection":["Noticias"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/wata.es\/?p=12557","url":"https:\/\/wata.es\/?p=12557","name":"Crear un servidor REST con Spring Boot - WATA Factory","isPartOf":{"@id":"https:\/\/wata.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/wata.es\/?p=12557#primaryimage"},"image":{"@id":"https:\/\/wata.es\/?p=12557#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\/?p=12557#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wata.es\/?p=12557"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.es\/?p=12557#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\/?p=12557#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\/#website","url":"https:\/\/wata.es\/","name":"WATA Factory","description":"IT Consulting &amp; Outsourcing for your company","publisher":{"@id":"https:\/\/wata.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wata.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/wata.es\/#organization","name":"WATA Factory","url":"https:\/\/wata.es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wata.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\/#\/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\/#\/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}]}}