Spring Boot Basics - Introduction To Spring Data Rest


Spring Data project provides common abstractions to integrate with different kinds of data stores. Spring Data Rest is part of the umbrella of Spring Data projects. It makes it easy to build hypermedia-driven REST web services, on top of Spring Data repositories.

You will learn

  • What is Spring Data Rest?
  • How does Spring Data Rest make building REST API easier?
  • How to integration Spring Data Rest with Spring Data JPA?
  • What are important features of Spring Data Rest?
  • How to execute REST API created using Spring Data Rest?

What Does Spring Data Rest Do?

It does all of the following:

  • Exposes REST services around the Spring Data, without having to write a lot of code.
  • Supports both SQL-based and No SQL-based databases.
  • Supports Pagination
  • Enables Filtering
  • Allows for Sorting
  • Supports HATEOAS

Why Spring Data Rest

Spring Data Rest is ideal for simple projects, that quickly want to get started with creating REST API.

Let’s look at a quick example of using Spring Data Rest to build a REST API.

Generate your project

The easiest way to bring such projects up, would be to use the Spring Initializr:

image info

Note that we have included the dependencies such as Web, JPA and Rest Repositories.You can generate the project, and then import it as a maven project into Eclipse IDE.

Create Entity

Once you have the project imported into eclipse, lets create a JPA Entity - Todo:

image info

@Entity Todo has an Id, and has a few fields and methods.

Create RepositoryRestResource

Once you have an entity, you can create a RepositoryRestResource for it.


	@RepositoryRestResource(collectionResourceRel="todos", path="todos")
	public interface TodoRepository 
					extends PagingAndSortingRepository<Todo, Long> {
		List<Todo> findByUser(@Param("user") String user);
	}
	

Testing REST API

Once you have the Entity and RepositoryRestResource, you are ready to fire your requests.

For example, you can send a POST request to a URL to create a resource:

image info

You can see that the link of the created resource is returned to you.

Another thing you can do is go to the URL and see what resources are currently stored there: image info

You can also access a specific todo stored in the repository: image info

You can do a search on the repository by typing in a query such as: https://localhost:8080/todos?user="Jill"

You can also do a search by directly invoking the repository method: https://localhost:8080/search/findByUser?user="Jill"

When to use Spring Data Rest?

Remember to use Spring Data Rest only for simple projects. It is great to use when you are building a prototype for your application. However, when it comes to production applications, you need to think twice before using Spring Data Rest.

Do check out our video on the same topic:

image info

Summary

In this article, we had a look at Spring Data Rest, which is a framework used to build REST services around Spring Data repositories. It is ideal to use with simple applications or prototypes.

Related Posts

Spring Boot Tutorials for Beginners

At in28Minutes, we are creating a number of tutorials with videos, articles & courses on Spring Boot for Beginners and Experienced Developers. This resources will help you learn and gain expertise at Spring Boot.

Introduction To Aspect Oriented Programming and Cross Cutting Concerns

Software applications are built in layers. There is common functionality that is sometimes needed across layers - logging, performance tracing etc. How do you implement these common features?

Programming Basics - Introduction To Object Oriented Programming

Object oriented programming (OOP) is all about thinking in terms of objects. Let's dig deeper.

Programming Basics - Five Things To Think About While Programming

You would obviously want to write code that meets your core requirements and provide good performance - choosing right data structures and algorithms to use is the fundamental part of programming. What are the other things that you need to worry about? Here are five things that we think are essential.

Asynchronous communication with queues and microservices - A perfect combination?

In this article, we throw some light on what asynchronous messaging is all about and discuss why you should consider it for your microservices architectures.

Microservice Best Practice - Build an Archetype

In this article, we focus on learning why creating proper archetypes is important for successful microservices architecture.

Microservice Architecture Best Practices - Messaging Queues

In this article, we discuss why Messaging queues are needed, and how they form the cornerstone of communication in microservices architectures.

Microservice Best Practice - Why do you build a Vertical Slice?

In this article, we look at what is a vertical slice, and why we build it. We also discuss the best practices involved in building vertical slices.

Microservices Architectures - Event Driven Approach

In this article, we talk about event driven approach, in the context of microservices architectures. We also discuss what are the advantages of using an event driven approach.

The 12 Factor App - Best Practices In Cloud Native Applications and Microservices

In order that an application be deployed in the cloud and enjoy features such as auto scaling, it first needs to be cloud native. In this article, we have a close look at the best practices for cloud native applications, popularly known as The 12 Factor App.