Creating REST APIs with Spring MVC

Building REST APIs is an essential skill for modern web application developers. Spring MVC provides a powerful framework for creating RESTful web services by leveraging its annotations and features. In this post, we will discuss how to effectively use Spring MVC to create REST APIs.

What is Spring MVC?

Spring MVC is a part of the Spring Framework that provides functionalities to build web applications using the Model View Controller design pattern. It supports RESTful frameworks to create APIs, allowing developers to return data in various formats, including JSON and XML.

Setting Up Your Spring MVC Project

To create a new Spring MVC application, use Spring Initializr to bootstrap your project. Select the following dependencies:

  • Spring Web
  • Spring Boot DevTools (optional, for easier development)

1. Adding Dependencies

After generating your project, make sure the pom.xml has the necessary dependencies. Here’s what you need:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

Creating a REST Controller

Next, create a REST controller class that will handle HTTP requests. Use the @RestController annotation to mark your controller:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Arrays;
import java.util.List;

@RestController
@RequestMapping("/api/books")
public class BookController {
    @GetMapping
    public List<String> getAllBooks() {
        return Arrays.asList("The Great Gatsby", "1984", "To Kill a Mockingbird");
    }

    @GetMapping("/{id}")
    public String getBookById(@PathVariable int id) {
        List<String> books = Arrays.asList("The Great Gatsby", "1984", "To Kill a Mockingbird");
        return books.get(id); // Simplistic error handling
    }
}

Testing the REST API

Run your Spring Boot application and open your browser or a tool like Postman to test your API.

  • To fetch all books, visit http://localhost:8080/api/books.
  • To fetch a specific book by ID, visit http://localhost:8080/api/books/1.

Handling JSON Responses

Spring MVC automatically converts Java objects into JSON responses using the Jackson library included in Spring Boot. If you return a custom object instead of a simple string, Spring will handle the conversion:

import java.util.Objects;

class Book {
    private String title;
    private String author;

    public Book(String title, String author) {
        this.title = title;
        this.author = author;
    }

    // Getters and Setters
}

@GetMapping
public List<Book> getAllBooks() {
    return Arrays.asList(
        new Book("The Great Gatsby", "F. Scott Fitzgerald"),
        new Book("1984", "George Orwell")
    );
}

Exception Handling

To handle errors and exceptions gracefully in your API, you can use @ExceptionHandler. For example:

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.http.HttpStatus;

@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(IndexOutOfBoundsException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public ResponseEntity<String> handleNotFound(IndexOutOfBoundsException ex) {
        return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Book not found");
    }
}

Conclusion

Building RESTful APIs with Spring MVC is straightforward and efficient. By leveraging Spring Boot’s built-in features, you can create robust and maintainable web services that can easily handle various client requests. This tutorial provided the essential building blocks to get you started, enabling you to expand upon these foundations for your application’s specific needs.

For further learning and advanced techniques in developing Spring Boot applications, explore the expansive resources offered by ITER Academy to enhance your skill set in modern application development.

To learn more about ITER Academy, visit our website.

Scroll to Top