Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

168
Vistas
Resto del encabezado de la versión de la API en SwaggerUI

Quiero usar Springfox SwaggerUI para mi documentación de Rest API (spring-mvc). Uso el encabezado de la versión en la anotación @RequestMapping, pero si tengo dos versiones del mismo método, en SwaggerUI solo puedo ver una.

Por ejemplo:

 @GetMapping(value = "/users", headers = "X-API-VERSION=1") public List<User> getUsersV1(){...} @GetMapping(value = "/users", headers = "X-API-VERSION=2") public List<User> getUsersV2(){...}

El código anterior da como resultado solo un método visible en la documentación de la API.

¿Hay alguna opción para configurar Swagger para diferentes puntos finales teniendo en cuenta el encabezado de mi versión?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Después de algunas investigaciones, encontré una solución a mi problema, tal vez ayude a alguien en el futuro. Agrego el sufijo "#v" a la ruta usando PathDecorator.

Ahora puedo ver todos mis métodos en la documentación generada.

 @Component @Order(value = Ordered.HIGHEST_PRECEDENCE + 70) public class VersionPathDecorator implements PathDecorator { private final static Logger logger = LoggerFactory.getLogger(VersionPathDecorator.class); @Override public Function<String, String> decorator(PathContext context) { return (path) -> { StringBuilder sb = new StringBuilder(path); Field parent = null; try { parent = PathContext.class.getDeclaredField("parent"); parent.setAccessible(true); RequestMappingContext rmc = (RequestMappingContext) parent.get(context); rmc.headers() .stream() .filter(h -> RequestHeader.X_API_VERSION.headerName.equals(h.getName())) .map(NameValueExpression::getValue) .findFirst() .ifPresent(v -> sb.append("#v").append(v)); } catch (NoSuchFieldException | IllegalAccessException e) { logger.error("path decoration failed", e); } return sb.toString(); }; } @Override public boolean supports(DocumentationContext documentationContext) { return true; } }
about 4 years ago · Santiago Trujillo Denunciar

0

Swagger identifica los servicios por su punto final.

Cada característica debe responder a un punto final diferente y no se deben usar encabezados para esa función.

Si está utilizando servicios REST, lea un poco sobre Restfull y siga sus principios. Esta URL puede ayudarlo: http://docs.oracle.com/javaee/6/tutorial/doc/gijqy.html

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda