Ir al contenido principal

Documentación Openapi en Quarkus (Swagger y Rapidoc)

1️⃣ Agregar la extensión OpenAPI

Quarkus usa SmallRye OpenAPI para generar documentación OpenAPI 3 automáticamente desde tus endpoints REST.

# Windows
.\gradlew.bat addExtension --extensions="smallrye-openapi"

# Linux/macOS
./gradlew addExtension --extensions="smallrye-openapi"

Qué hace este comando:

  • Descarga la dependencia smallrye-openapi.
  • Configura Quarkus para generar /q/openapi.
  • Permite usar Swagger UI y otros visualizadores sin tocar el backend.

2️⃣ Crear un endpoint de ejemplo con etiquetas para OpenAPI

Archivo: src/main/java/py/com/jsifen/HelloResource.java

package py.com.jsifen;

import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
import org.eclipse.microprofile.openapi.annotations.Operation;
import org.eclipse.microprofile.openapi.annotations.tags.Tag;

@Path("/hello")
@Tag(name = "Hello", description = "Endpoint de prueba Hello")
public class HelloResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    @Operation(
        summary = "Saludo simple",
        description = "Devuelve un saludo de prueba"
    )
    public String hello() {
        return "Hello from Quarkus!";
    }
}

Qué hace este código:

  • @Path("/hello") define el endpoint REST.
  • @Tag agrega metadata para que la UI de documentación (Swagger/RapiDoc) agrupe y describa el endpoint.
  • @Operation proporciona un resumen y descripción que aparece en la documentación.
  • Devuelve un saludo de texto plano.

3️⃣ Levantar Quarkus Dev y probar Swagger UI

# Windows
.\gradlew.bat quarkusDev

# Linux/macOS
./gradlew quarkusDev

Si querés cambiar el puerto y el path de Swagger UI, agregá estas líneas en application.properties:

quarkus.http.port=8000
quarkus.swagger-ui.path=/doc/swagger

Luego, al levantar Quarkus Dev, Swagger UI estará en el nuevo path y puerto:

4️⃣ Crear la carpeta para recursos estáticos (si no existe)

Si querés usar Redoc o RapiDoc, necesitás la carpeta:

src/main/resources/META-INF/resources/
  • Si no existe, creala manualmente dentro de src/main/resources.
  • Todo lo que pongas en esta carpeta se servirá automáticamente desde el root (/) del servidor Quarkus.

5️⃣ Agregar RapiDoc

Archivo mínimo rapidoc.html:

src/main/resources/META-INF/resources/rapidoc.html
<!DOCTYPE html>
<html>
  <head>
    <title>API Docs RapiDoc</title>
    <script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
  </head>
  <body>
    <rapi-doc 
      spec-url="/q/openapi"
      render-style="focused"
      theme="light">
    </rapi-doc>
  </body>
</html>

Subcarpeta opcional:

src/main/resources/META-INF/resources/doc/rapidoc/index.html

URL según ubicación:

Ubicación del archivo URL para abrirlo
META-INF/resources/rapidoc.html http://localhost:8080/rapidoc.html
META-INF/resources/doc/rapidoc/index.html http://localhost:8080/doc/rapidoc/index.html

❌ Evitar ponerlo directamente en src/main/resources/ sin META-INF/resources/ → causará 404.

6️⃣ Levantar y probar

# Windows
.\gradlew.bat quarkusDev

# Linux/macOS
./gradlew quarkusDev

7️⃣ Resumen de rutas y visualizadores

Feature Ruta Visualizador
OpenAPI JSON /q/openapi estándar OpenAPI 3
Swagger UI /q/swagger-ui oficial SmallRye
RapiDoc /rapidoc.html alternativa moderna
RapiDoc subcarpeta /doc/rapidoc/index.html alternativa moderna

💡 Tips finales

  • Reiniciá Quarkus Dev cada vez que agregues nuevos archivos estáticos.
  • Subcarpetas dentro de META-INF/resources son totalmente soportadas.
  • Todo sigue cumpliendo OpenAPI 3, así que podés cambiar la UI sin afectar el estándar.

Comentarios

Entradas populares de este blog

Instalación y Configuración de MySQL 5.7 en Ubuntu 24.04 LTS

Instalar MySQL 5.7 en Ubuntu 24.04 1. Descargar e instalar MySQL Copiar mkdir ~/mysql57 cd ~/mysql57 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz sudo mv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysql sudo ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql 2. Instalar dependencias necesarias IMPORTANTE: Se descargan las versiones nuevas de las librerías y se las vincula con las librerías que necesita MySQL. Copiar sudo apt update # Reemplazo de libaio sudo apt install libaio1t64 # Reemplazo de libtinfo y ncurses sudo apt install libtinfo6 libncurses6 Copiar # Crear los enlaces simbólicos sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/libaio.so.1 sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5 sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.6 /usr/lib/x86_64...

Instalar DeepSeek R1 1.5B en Ubuntu 24.04 sin GPU

Instalar DeepSeek en tu sistema sin GPU, pasos: Especificaciones del Entorno de Pruebas Componente Detalle SO Ubuntu Cinnamon 24.04 LTS x86_64 Kernel 6.8.0-51-generic CPU Intel i7-6820HQ (8 núcleos) @ 3.600GHz GPUs AMD ATI Radeon HD 8830M / R7 250 / R7 M465X Intel HD Graphics 530 RAM 15.882 GB (3.716 GB en uso) Resolución 1440x810 Escritorio Cinnamon 6.0.4 1. Instalar Git LFS sudo apt-get install git-lfs git lfs install 2. Clonar el repositorio cd /opt sudo mkdir deepseek && sudo chown $USER:$USER deepseek cd deepseek git clone https://huggingface.co/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B 3. Crear y activar un entorno virtual python -m ve...

Instalar Jasper Studio 6.21 para Ubuntu 24.04

Instalar js-studiocomm_6.21.3 en Ubuntu 24.4 Para instalar Jaspersoft Studio en Ubuntu 24.4, sigue estos pasos: 1. Descargar Jasper Studio Descarga la versión js-studiocomm_6.21.3 desde el siguiente enlace: Jaspersoft Studio 6.21.3 2. Crear el directorio de instalación mkdir /opt/jasperstudio 3. Mover el archivo descargado mv /dir_descarga/js-studiocomm_6.21.3_linux_x86_64.tgz /opt/jasperstudio/ cd /opt/jasperstudio 4. Extraer el archivo tar -xvzf js-studiocomm_6.21.3_linux_x86_64.tgz cd js-studiocomm_6.21.3 5. Ejecutar Jaspersoft Studio ./Jaspersoft\ Studio 6. Crear acceso directo en el escritorio Para facilitar el acceso, crea un archivo .desktop en el escritorio: gedit ~/Escritorio/jaspersoft-studio.desktop En el archivo jaspersoft-studio.desktop , agrega lo siguiente: [Desktop Entry] Version=1.0 Ty...