Введение
Если вы работаете со Spring MVC, вы, вероятно, часто будете иметь дело с HTTP-запросами. При обработке этих запросов вам может потребоваться извлечь определенные параметры либо из URL-адреса, либо из параметров запроса. Здесь в игру вступают две мощные аннотации, предоставляемые Spring MVC, @PathVariable
и @RequestParam
.
Обзор
Прежде чем углубиться, давайте обрисуем в общих чертах, что это за аннотации:
@PathVariable
— это аннотация Spring, указывающая, что параметр метода должен быть привязан к переменной шаблона URI.@RequestParam
— это аннотация Spring, используемая для обработки параметров запроса в URL-адресах запросов.
В следующих разделах мы подробно рассмотрим обе аннотации и приведем примеры, иллюстрирующие их использование.
Использование @PathVariable
@PathVariable
используется для привязки параметра метода к переменной пути. Он часто используется в веб-службах RESTful, где URL-адрес содержит переменную пути. Например, рассмотрим такой URL-адрес, как /user/123
, где 123
— это динамическая часть URL-адреса.
В вашем контроллере Spring вы можете использовать @PathVariable
для извлечения этой динамической части, например:
@Controller public class UserController { @GetMapping("/user/{id}") public String getUser(@PathVariable("id") String id) { // Logic to get the user based on id ... } }
В этом примере {id}
в аннотации @GetMapping
является переменной пути. Метод getUser()
будет вызываться при наличии запроса GET к /user/{id}
, а часть id
из URL-адреса будет передана в качестве аргумента метода getUser()
.
Обработка нескольких @PathVariable
Можно использовать несколько аннотаций @PathVariable
, если ваш URI состоит из нескольких динамических частей. Например:
@Controller public class UserController { @GetMapping("/user/{userId}/orders/{orderId}") public String getUserOrder(@PathVariable("userId") String userId, @PathVariable("orderId") String orderId) { // Logic to get the order based on userId and orderId ... } }