Введение

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