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

333
Vistas
¿Cómo agregar el prefijo "api" a todos los controladores en com.myproject.api?

Estaba tratando de encontrarlo, pero encontré muchos escenarios diferentes, pero no este.

Lo que quiero hacer es agregar el prefijo "/api/" a todas las rutas en los controladores en com.myproject.api. Quiero "/api/*" para todos los controladores del paquete com.myapp.api y ningún prefijo para todos los controladores de com.myapp.web

¿Es posible con Spring/Spring Boot?

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

0

Si está utilizando Springboot, puede agregar lo siguiente:

 server.servlet.context-path=/api

al archivo application.properties.

about 4 years ago · Santiago Trujillo Denunciar

0

Con Spring Boot, esto funcionó para mí:

 @Configuration @EnableWebMvc public class WebMvcConfiguration implements WebMvcConfigurer { @Override public void configurePathMatch(PathMatchConfigurer configurer) { configurer.addPathPrefix("/api", HandlerTypePredicate.forBasePackage("com.your.package")); } }
about 4 years ago · Santiago Trujillo Denunciar

0

Logré el resultado que creo que está buscando de la siguiente manera, siempre que esté usando MVC.

Primero haga una clase de configuración que implemente WebMvcRegistrations

 @Configuration public class WebMvcConfig implements WebMvcRegistrations { @Value("${Prop.Value.String}") //"api" private String apiPrefix; @Value("${Prop.Package.Names}") //["com.myapp.api","Others if you like"] private String[] prefixedPackages; @Override public RequestMappingHandlerMapping getRequestMappingHandlerMapping() { return new PrefixedApiRequestHandler(apiPrefix,prefixedPackages); } }

Luego, cree una clase que amplíe RequestMappingHandlerMapping y anule getMappingForMethod

 @Log4j2 public class PrefixedApiRequestHandler extends RequestMappingHandlerMapping { private final String prefix; private final String[] prefixedPackages; public PrefixedApiRequestHandler(final String prefix, final String... packages) { super(); this.prefix = prefix; this.prefixedPackages = packages.clone(); } @Override protected RequestMappingInfo getMappingForMethod(final Method method, final Class<?> handlerType) { RequestMappingInfo info = super.getMappingForMethod(method, handlerType); if (info == null) { return null; } for (final String packageRef : prefixedPackages) { if (handlerType.getPackageName().contains(packageRef)) { info = createPrefixedApi().combine(info); log.trace("Updated Prefixed Mapping " + info); return info; } } log.trace("Skipped Non-Prefixed Mapping " + info); return info; } private RequestMappingInfo createPrefixedApi() { String[] patterns = new String[prefix.length()]; for (int i = 0; i < patterns.length; i++) { // Build the URL prefix patterns[i] = prefix; } return new RequestMappingInfo( new PatternsRequestCondition(patterns, getUrlPathHelper(), getPathMatcher(), useSuffixPatternMatch(), useTrailingSlashMatch(), getFileExtensions()), new RequestMethodsRequestCondition(), new ParamsRequestCondition(), new HeadersRequestCondition(), new ConsumesRequestCondition(), new ProducesRequestCondition(), null); } }

Luego debería ver /api/(ControllerMapping) para todas las asignaciones, solo en los paquetes especificados. Nota: tengo @RequestMapping("/") en la parte superior de mi controlador.

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