Параметры запросов и пути: @RequestParam и @PathVariable
Spring MVC предоставляет аннотации @RequestParam и @PathVariable, которые позволяют получать параметры запроса и параметры пути. Эти аннотации упрощают доступ к переменным, переданным в HTTP-запросах, и делают код более читаемым и поддерживаемым.
1. Что такое @RequestParam?
Аннотация @RequestParam используется для извлечения параметров из строки запроса URL. Например, если пользователь отправляет запрос http://example.com/search?query=spring, параметр query может быть захвачен и использован в методе контроллера с помощью @RequestParam.
Пример:
2. Настройка параметров @RequestParam
Имя параметра: можно задать другое имя переменной.
Обязательные параметры: с помощью атрибута required, параметр может быть объявлен обязательным.
Значение по умолчанию: если параметр не указан в запросе, можно указать значение по умолчанию.
Пример:
3. Множественные параметры с @RequestParam
Можно принимать несколько параметров запроса одновременно, объявив их в сигнатуре метода контроллера.
Пример:
4. @PathVariable: Параметры пути
Аннотация @PathVariable используется для извлечения значений из URI-пути. Это особенно полезно при построении RESTful URL-адресов, где параметры передаются как часть маршрута.
Пример:
5. Настройка параметров @PathVariable
Также можно изменить имя переменной, передаваемое в URL, с помощью параметра name.
Пример:
6. Объединение @RequestParam и @PathVariable
В одном методе можно комбинировать @RequestParam и @PathVariable для обработки более сложных запросов.
Пример:
#Java #Training #Spring #RequestParam #PathVariable
Spring MVC предоставляет аннотации @RequestParam и @PathVariable, которые позволяют получать параметры запроса и параметры пути. Эти аннотации упрощают доступ к переменным, переданным в HTTP-запросах, и делают код более читаемым и поддерживаемым.
1. Что такое @RequestParam?
Аннотация @RequestParam используется для извлечения параметров из строки запроса URL. Например, если пользователь отправляет запрос http://example.com/search?query=spring, параметр query может быть захвачен и использован в методе контроллера с помощью @RequestParam.
Пример:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SearchController {
@GetMapping("/search")
public String search(@RequestParam String query) {
return "Search results for: " + query;
}
}
Запрос http://localhost:8080/search?query=spring вызовет метод search, и параметр query будет содержать значение "spring".
2. Настройка параметров @RequestParam
Имя параметра: можно задать другое имя переменной.
Обязательные параметры: с помощью атрибута required, параметр может быть объявлен обязательным.
Значение по умолчанию: если параметр не указан в запросе, можно указать значение по умолчанию.
Пример:
@GetMapping("/search")
public String search(
@RequestParam(name = "query", required = false, defaultValue = "default") String query) {
return "Search results for: " + query;
}
Если запрос не содержит параметра query, используется значение по умолчанию "default".
3. Множественные параметры с @RequestParam
Можно принимать несколько параметров запроса одновременно, объявив их в сигнатуре метода контроллера.
Пример:
@GetMapping("/filter")
public String filter(
@RequestParam String category,
@RequestParam int price) {
return "Filtering by category: " + category + " and price: " + price;
}
Запрос http://localhost:8080/filter?category=electronics&price=1000 передаст параметры в метод filter.
4. @PathVariable: Параметры пути
Аннотация @PathVariable используется для извлечения значений из URI-пути. Это особенно полезно при построении RESTful URL-адресов, где параметры передаются как часть маршрута.
Пример:
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@GetMapping("/user/{id}")
public String getUserById(@PathVariable int id) {
return "User ID: " + id;
}
}
Запрос http://localhost:8080/user/1 вызовет метод getUserById, и параметр id будет содержать значение 1.
5. Настройка параметров @PathVariable
Также можно изменить имя переменной, передаваемое в URL, с помощью параметра name.
Пример:
@GetMapping("/product/{productId}")
public String getProduct(@PathVariable("productId") int id) {
return "Product ID: " + id;
}
Теперь productId из URL будет захвачен как параметр id метода.
6. Объединение @RequestParam и @PathVariable
В одном методе можно комбинировать @RequestParam и @PathVariable для обработки более сложных запросов.
Пример:
@GetMapping("/order/{orderId}")
public String getOrder(
@PathVariable int orderId,
@RequestParam(name = "details", defaultValue = "false") boolean details) {
return "Order ID: " + orderId + ", details: " + details;
}
Запрос http://localhost:8080/order/123?details=true захватит orderId и параметр запроса details.
#Java #Training #Spring #RequestParam #PathVariable