Request Param annotation
The `@RequestParam` annotation in Spring is used to extract query parameters from the URL and bind them to method parameters in a controller. This is useful for handling optional or required parameters that are passed as part of the query string in HTTP GET or POST requests.
Table of Contents
Example
- Step 1: Create a Spring Boot Application
- Ensure you have the necessary dependencies in your `pom.xml` (for Maven) or `build.gradle` (for Gradle).
Maven Dependency
```xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
```
Gradle Dependency
```groovy
implementation 'org.springframework.boot:spring-boot-starter-web'
```
- Step 2: Create the Main Application Class
- Create the main class for the Spring Boot application.
Example
```java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
Explanation:
- `@SpringBootApplication`: Indicates a configuration class that declares one or more `@Bean` methods and also triggers auto-configuration and component scanning.
- Step 3: Create a Controller
- Create a controller class that uses the `@RequestParam` annotation to handle incoming requests with query parameters.
Example
```java
package com.example.demo.controller;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api")
public class UserController {
@GetMapping("/greet")
public String greetUser(@RequestParam(value = "name", defaultValue = "Guest") String name,
@RequestParam(value = "age", required = false) Integer age) {
if (age != null) {
return "Hello, " + name + "! You are " + age + " years old.";
} else {
return "Hello, " + name + "!";
}
}
}
```
Explanation:
- `@RestController`: Indicates that this class is a REST controller, and the return values of methods are directly written to the HTTP response body.
- `@RequestMapping(“/api”)`: Specifies that all methods in this class handle requests starting with `/api`.
- `@GetMapping(“/greet”)`: Maps GET requests to `/api/greet` to the `greetUser` method.
- `@RequestParam(value = “name”, defaultValue = “Guest”)`: Binds the `name` query parameter to the `name` method parameter. If `name` is not provided, it defaults to `”Guest”`.
- `@RequestParam(value = “age”, required = false)`: Binds the `age` query parameter to the `age` method parameter. If `age` is not provided, it is set to `null`.
- Step 4: Running the Application
- Run the application from the main class (`DemoApplication`). You can test the endpoint using a tool like Postman or by navigating to the URLs in your browser:
- GET request to `http://localhost:8080/api/greet?name=John&age=30` should return `”Hello, John! You are 30 years old.”`.
- GET request to `http://localhost:8080/api/greet?name=Jane` should return `”Hello, Jane!”`.
- GET request to `http://localhost:8080/api/greet` should return `”Hello, Guest!”`.
Conclusion
- `@RequestParam`: Used to extract query parameters from the URL and bind them to method parameters. It supports default values and optional parameters.
- Example: Demonstrated how to use `@RequestParam` to handle query parameters and provide default values when parameters are not present.