@GetMapping Spring Boot Example

Spring @GetMapping example shows how to use @GetMapping annotation to map HTTP GET requests onto specific handler methods.

What is @GetMapping?

@GetMapping is a specialized version of the @RequestMapping annotation in Spring MVC. It is specifically tailored for HTTP GET requests. By using this annotation, you tell Spring that a particular method should respond to GET requests at a specified URL.
@GetMapping - shortcut for @RequestMapping(method = RequestMethod.GET)

Why Use @GetMapping?

Readability: @GetMapping is concise and clearly indicates the HTTP method being used. There's no ambiguity about the type of request it handles.

Convenience: Instead of specifying the method attribute in @RequestMapping, like @RequestMapping(value="/path", method=RequestMethod.GET), with @GetMapping, it's much cleaner: @GetMapping("/path").

Alignment with Other HTTP Methods: Spring also provides other annotations like @PostMapping, @PutMapping, @DeleteMapping, etc., making your controller methods more expressive and consistent.

@GetMapping Example

Let's build a simple Spring Boot application that uses the @GetMapping annotation. 

Setting Up the Project 

Start by creating a new Spring Boot project using the Spring Initializer or your favorite IDE. 

The Model 

Imagine we're creating an API for a library. We'll have a simple Book class.
public class Book {
    private Long id;
    private String title;
    private String author;

    // Constructors, getters, setters, etc.
}

The Controller 

Now, let's create a BookController that will handle the incoming HTTP GET requests.
@RestController
@RequestMapping("/api/books")
public class BookController {

    // For the sake of simplicity, let's use a static list
    private static List<Book> books = Arrays.asList(
        new Book(1L, "Spring Boot Guide", "John Doe"),
        new Book(2L, "Learning Spring", "Jane Smith")
    );

    @GetMapping
    public List<Book> getAllBooks() {
        return books;
    }

    @GetMapping("/{id}")
    public Book getBookById(@PathVariable Long id) {
        return books.stream().filter(book -> book.getId().equals(id)).findFirst().orElse(null);
    }
}
In this controller: 
  • @GetMapping without any value returns a list of all books. 
  • @GetMapping("/{id}") returns a book with a specific ID.

Running the Application 

After setting up the application and running it, when you make a GET request to /api/books, you'll get a list of all books. 

Similarly, a GET request to /api/books/1 will return the book with the ID of 1. 

Conclusion 

@GetMapping simplifies the way we handle HTTP GET requests in Spring, making our code more readable and maintainable. If you're developing RESTful services with Spring Boot, embracing @GetMapping and its siblings is a step in the right direction!

Comments