example data custom baeldung spring-data-rest

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í.