Saltar al contenido principal

UrlBuilder

Utilidad fluida para construir URLs con query parameters de forma null-safe.

Elimina la necesidad de concatenar manualmente los parámetros de la URL y gestiona automáticamente los valores nulos y los campos anotados con JsonIgnore.

Uso básico — params manuales

String url = UrlBuilder.of("https://api.example.com/documents")
.param("casoId", "uuid-123")
.param("isValid", true)
.param("categoryId", null) // ← ignorado automáticamente
.build();
// → "https://api.example.com/documents?casoId=uuid-123&isValid=true"

Uso con objeto request — automático

// Convierte todos los campos no nulos (y no @JsonIgnore) a query params
String url = UrlBuilder.of("https://api.example.com/documents")
.fromObject(request)
.build();

Reglas de fromObject

  • Campos con valor null son ignorados
  • Campos anotados con JsonIgnore son excluidos Solo tipos simples: String, Boolean, Integer, Long, Double, Float y sus primitivos
  • Campos complejos (File, colecciones, objetos) son ignorados

Metodos

of(String baseUrl)

Crea un nuevo builder para la URL base indicada.

UrlBuilder.of("https://api.example.com/endpoint")
.param("id", "uuid")
.build();

Parametros:

  • baseUrl — URL base sin query params

Retorna: nuevo UrlBuilder listo para configurar


param(String name, Object value)

Añade un query param si el valor no es null ni vacío.

.param("casoId", request.getCasoId()) // incluido si no es null
.param("category", null) // ignorado
.param("active", false) // incluido — false es un valor válido

Parametros:

  • name — nombre del parámetro
  • value — valor del parámetro (String, Boolean, Integer, etc.)

Retorna: este builder para encadenamiento


fromObject(Object request)

Convierte automáticamente los campos del objeto a query params usando reflexión.

Solo procesa tipos simples. Los campos JsonIgnore y los tipos complejos (File, colecciones, etc.) son excluidos automáticamente.

// Convierte todos los campos del request a ?campo1=val&campo2=val...
UrlBuilder.of(baseUrl)
.fromObject(uploadRequest) // file es @JsonIgnore → excluido
.build();

Parametros:

  • request — objeto cuyos campos se convertirán a query params

Retorna: este builder para encadenamiento


build()

Construye la URL final concatenando todos los query params acumulados.

String url = UrlBuilder.of("https://api.example.com/docs")
.param("casoId", "uuid")
.param("isValid", true)
.build();
// → "https://api.example.com/docs?casoId=uuid&isValid=true"

Retorna: URL completa con query string, o la URL base si no hay params