2015-01-18 13 views
19

devo mappature del controller di /user e /order:Come specificare il prefisso per tutti i controller in Spring Boot?

@RestController 
@RequestMapping("/users") 
public class UserController { 
    ... 
} 

@RestController 
@RequestMapping("/orders") 
public class OrderController { 
    ... 
} 

voglio accedere questi da URL rispettivamente http://localhost:8080/api/users e http://localhost:8080/api/orders,.

Come ottengo questo in Spring Boot?

+1

possibile duplicato del [Primavera Boot Context Root] (http: // StackOverflow. it/questions/20405474/spring-boot-context-root) –

risposta

26

È possibile fornire una mappatura al percorso di contesto radice dell'applicazione di avvio a molla su /api/* nella configurazione personalizzata.

import org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration; 
import org.springframework.boot.context.embedded.ServletRegistrationBean; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.DispatcherServlet; 

@Configuration 
public class DispatcherServletCustomConfiguration { 

    @Bean 
    public DispatcherServlet dispatcherServlet() { 
     return new DispatcherServlet(); 
    } 

    @Bean 
    public ServletRegistrationBean dispatcherServletRegistration() { 
     ServletRegistrationBean registration = new ServletRegistrationBean(
       dispatcherServlet(), "/api/"); 
     registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME); 
     return registration; 
    } 
} 

o aggiungere questo al tuo application.properties in src\main\resources cartella

server.contextPath=/api/* 

Più che trovate qui Spring Boot Context Root e qui Add servlet mapping to DispatcherServlet

+28

questo aggiunge il prefisso a tutto, non solo ai controller – CESCO

+0

Entrambi funzionano alla grande quando si desidera aggiungere un pa di contesto esimo. I due problemi che ho dovuto affrontare è che la creazione di un bean DispatcherServelt significava anche che le rotte/oauth erano sotto il percorso di contesto che non rientra negli standard RESTful; e l'uso di contextPath nella configurazione ha introdotto lo stesso problema, oltre a CORS e test che non erano a conoscenza del percorso di contesto. Ho finito per aggiungere l'annotazione @RequestMapping a ciascun controller, se necessario. –

+12

Dovrebbe essere solo "server.contextPath =/api /". Avere un trailing * causa l'errore in Spring Boot versione 1.3.5 – Anand

Problemi correlati