spring-data-rest - custom - spring data rest filter
Ruta base de datos de primavera (6)
A partir de Spring Boot 1.2 puede configurar esta propiedad:
spring.data.rest.baseUri=api
Alternativamente:
spring.data.rest.base-uri=api
(Spring Boot utiliza un sistema de enlace relajado )
NOTA: Descubrí que si ha extendido RepositoryRestMvcConfiguration
con una configuración personalizada, la propiedad no entra en vigencia. Para más información, ver:
https://github.com/spring-projects/spring-boot/issues/2392
Una vez que se lance la próxima versión de Spring Boot (después de la 1.2.1), la solución será extender RepositoryRestMvcBootConfiguration
lugar.
Agregué Spring Data Rest (2.0) a una aplicación Spring MVC existente al crear una clase de configuración de Java que amplía RepositoryRestMvcConfiguration y agregando @RestResource a los repositorios.
¿Es posible cambiar la URL base para la API Rest? P.ej:
http://localhost:8080/rest/customers
en lugar de
http://localhost:8080/customers
Intenté anular configureRepositoryRestConfiguration usando setBaseURI, pero no pareció aplicarse a todos los enlaces en la respuesta.
Mira la documentación oficial de cómo cambiar la base de descanso uri
Pero no sé por qué la propiedad spring.data.rest.basePath=/api
no funciona y debo escribir una segunda solución:
@Configuration
class CustomRestMvcConfiguration {
@Bean
public RepositoryRestConfigurer repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
config.setBasePath("/api");
}
};
}
}
Puede configurar RepositoryRestMvcConfiguration
reemplazándolo de la siguiente manera:
@Configuration
@Import(RepositoryRestMvcConfiguration.class)
public class RestDataConfig extends RepositoryRestMvcConfiguration {
@Override
protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
super.configureRepositoryRestConfiguration(config);
try {
config.setBaseUri(new URI("/data"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
Resolví mi problema agregando un segundo "AbstractAnnotationConfigDispatcherServletInitializer":
public class RestWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { RepositoryRestMvcConfiguration.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/rest/*" };
}
@Override
protected Filter[] getServletFilters() {
return null;
}
@Override
protected String getServletName() {
return "rest-exporter";
}
}
Utilicé spring boot 1.2.3.REALEASE Intenté spring.data.rest.baseUri=/api
y spring.data.rest.basePath=/api
pero no funciona.
Después de probar y buscar en Google: server.servlet-path=/api
funcionó para mí.
Ver documentación oficial.
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
server.servlet-path=/ # Path of the main dispatcher servlet.
server.context-path=
Puedes incluirlo en el archivo de configuración.
Consulte también Agregar ruta de contexto a la aplicación Spring Boot