Developing REST Service using Spring Boot
Overview
In this tutorial, we'll learn, how to develop a REST API using the Spring Boot framework.
We’ll primarily use Java configuration in this tutorial.
Pre-requisties
- JDK 1.8
- Maven
- IDE (for ease of use)
Setup maven project
Create a maven project and add the required dependencies and plugins in pom.xml
We will use the dependencyManagement to define a standard version of an artifact to use across multiple projects.
We will allow spring-boot-starter-parent to manage the version of the artifacts.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Now we'll add the spring-boot-starter-web dependency.
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Spring Boot Maven Plugin provides Spring Boot support in Maven, letting you package executable jar or war archives and run an application “in-place”.
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Creating a Spring Boot Application
Create a class with the main method. Annotate the class with @SpringBootApplication. Call the run method of SpringApplication class
package com.tutorialflix.spring.web;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringBootWebApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootWebApplication.class, args);
}
}
@SpringBootApplication includes the functionality of following annotations:
By default, it will perform the component scan in the base package. So make sure SpringBootWebApplication class is present in the base package.
Creating a REST Controller
Create a class with a meaningful name based on your requirement & annotate the class with @RestController. The @RestController is the central artifact in the entire Web Tier of the RESTful API.
package com.tutorialflix.spring.web.contrroller;
import org.springframework.stereotype.RestController;
@RestController
public class MyRestController {
}
Create a GET method to accept requests
Create a method named home to accept the request on '/' URL and show the index.html
@GetMapping("/sayHello")
public Map<String,String> sayHello() {
Map map = new HashMap<>();
map.put("response","Hello, how are you");
return map;
Create a POST method to accept requests
Create a method named home to accept the request on '/' URL and show the index.html
@PostMapping("/sayHelloWithName")
public Map<String,String> sayHelloWithName(Map<String,String> request) {
Map map = new HashMap<>();
map.put("response","Hello, how are you " + request.get("name"));
return map;
}
Configuration using properties file
Create a file application.properties inside resources folder of the application and following properties.
server.port=8081
logging.level.org.springframework.web=DEBUG
server.port : to change the default port 8080 to any other port number.
logging.level.org.springframework.web : to change the log level default INFO to DEBUG
Run the REST API
$ mvn spring-boot:run
Test
Goto localhost:8081