Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
¿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 answers
Answer question

0

Si está utilizando Springboot, puede agregar lo siguiente:

 server.servlet.context-path=/api

al archivo application.properties.

about 4 years ago · Santiago Trujillo Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!