
Введение
Если вы работаете со 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
...
}
}