How to expose the resourceId with Spring-Data-Rest?
Spring-Data-Rest is a quite new project in the Spring family of pivotal. The intention of this project is to reduce the boilercode of controllers and services when you need only CRUD methods on an entity for your REST resources. – Quote from project page is “Spring-Data-Rest makes it easy to expose JPA based repositories as RESTful endpoints.”
One requirement I had was to expose the CRUD identifier and database primary key which is annotated with @Id. In my case that was needed because the field was functional required. For that I had to expose it because at the standard configuration the ID field is only visible on the resource path, but not on the JSON body.
To expose it you need to configure your RepositoryRestMvcConfiguration like that:
1
2
3
4
5
6
7
8
|
@Configuration public class MyCoolConfiguration extends RepositoryRestMvcConfiguration { @Override protected void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) { config.exposeIdsFor(FooEntity. class ); } } |
The entity class could look like that:
1
2
3
4
5
6
7
8
9
|
@Entity public class FooEntity { @Id @GeneratedValue (strategy= GenerationType.AUTO) Long id; String name; } |
With this configuration you will receive your entity id back.
1
2
3
4
5
6
7
8
9
|
Additional Comment from a Spring-Developer: URI stands for unique, resource, *identifier* – The URI *is* the id. What I expose here is a database internals.
转自:How to expose the resourceId with Spring-Data-Rest?
另一种:
package net.huuat.micro.base.schedule; import net.huuat.micro.base.schedule.domain.TJobConf; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.rest.core.config.RepositoryRestConfiguration; import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer; import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurerAdapter; @Configuration public class SpringDataRestConfig { @Bean public RepositoryRestConfigurer repositoryRestConfigurer() { return new RepositoryRestConfigurerAdapter() { @Override public void configureRepositoryRestConfiguration( RepositoryRestConfiguration config) { config.exposeIdsFor(TJobConf.class); } }; } }