GitHub - spring-projects/spring-data-rest: Simplifies building hypermedia-driven REST web services on top of Spring Data repositories
The goal of the project is to provide a flexible and configurable mechanism for writing simple services that can be exposed over HTTP.
This takes your Spring Data repositories and front-ends them with HTTP, allowing you full CRUD capability over your entities, to include managing associations.
Features
-
Exposes a discoverable REST API for your domain model using HAL as media type.
-
Exposes collection, item and association resources representing your model.
-
Supports pagination via navigational links.
-
Allows to dynamically filter collection resources.
-
Exposes dedicated search resources for query methods defined in your repositories.
-
Allows to hook into the handling of REST requests by handling Spring
ApplicationEvents. -
Exposes metadata about the model discovered as ALPS and JSON Schema.
-
Allows to define client specific representations through projections.
-
Ships the latest release of HAL Explorer to easily explore HAL and HAL-FORMS based HTTP responses.
-
Supports JPA, MongoDB, Neo4j, Solr, Cassandra, Gemfire.
-
Allows advanced customizations of the default resources exposed.
Getting Started
Here is a quick teaser of an application using Spring Data REST in Java:
@CrossOrigin @RepositoryRestResource(path = "people") public interface PersonRepository extends CrudRepository<Person, Long> { List<Person> findByLastname(String lastname); @RestResource(path = "byFirstname") List<Person> findByFirstnameLike(String firstname); } @Configuration @EnableMongoRepositories class ApplicationConfig extends AbstractMongoConfiguration { @Override public MongoClient mongoClient() { return new MongoClient(); } @Override protected String getDatabaseName() { return "springdata"; } }
curl -v "http://localhost:8080/people/search/byFirstname?firstname=Oliver*&sort=name,desc"Maven configuration
Add the Maven dependency:
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest</artifactId> <version>${version}.RELEASE</version> </dependency>
If you’d rather like the latest snapshots of the upcoming major version, use our Maven snapshot repository and declare the appropriate dependency version.
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-rest</artifactId> <version>${version}-SNAPSHOT</version> </dependency> <repository> <id>spring-snapshot</id> <name>Spring Snapshot Repository</name> <url>https://repo.spring.io/snapshot</url> </repository>
Reporting Issues
Spring Data uses GitHub as issue tracking system to record bugs and feature requests. If you want to raise an issue, please follow the recommendations below:
-
Before you log a bug, please search the issue tracker to see if someone has already reported the problem.
-
If the issue doesn’t already exist, create a new issue.
-
Please provide as much information as possible with the issue report, we like to know the version of Spring Data that you are using and JVM version.
-
If you need to paste code, or include a stack trace use GitHub’s flavor of Markdown and wrap your code with triple-backquotes.
-
If possible try to create a test-case or project that replicates the issue. Attach a link to your code or a compressed file containing your code.
Building from Source
You don’t need to build from source to use Spring Data (binaries in repo.spring.io), but if you want to try out the latest and greatest, Spring Data can be easily built with the maven wrapper. You also need JDK 17.
If you want to build with the regular mvn command, you will need Maven v3.5.0 or above.
Examples
-
Spring Data Examples contains example projects that explain specific features in more detail.