Có sự khác biệt cơ bản giữa các tham số truy vấn và tham số đường dẫn. Nó như thế này:
www.your_domain?queryparam1=1&queryparam2=2
- tham số truy vấn.
www.your_domain/path_param1/entity/path_param2
- tham số đường dẫn.
Điều tôi ngạc nhiên là trong thế giới Spring MVC, rất nhiều người nhầm lẫn cái này với cái kia. Mặc dù các tham số truy vấn giống như tiêu chí cho tìm kiếm, nhưng thông số đường dẫn rất có thể sẽ xác định duy nhất một tài nguyên. Như đã nói, điều đó không có nghĩa là bạn không thể có nhiều tham số đường dẫn trong URI của mình, vì cấu trúc tài nguyên có thể được lồng vào nhau. Ví dụ: giả sử bạn cần một tài nguyên ô tô cụ thể của một người cụ thể:
www.my_site/customer/15/car/2
- tìm kiếm một chiếc xe thứ hai của khách hàng thứ 15.
Điều gì sẽ là một usecase để đặt tất cả các tham số đường dẫn vào bản đồ? Các tham số đường dẫn không có "khóa" khi bạn nhìn vào chính URI, các khóa đó trong bản đồ sẽ được lấy từ chú thích @Mapping của bạn, ví dụ:
@GetMapping("/booking/{param1}/{param2}")
Từ các tham số đường dẫn phối cảnh HTTP / REST thực sự không thể được chiếu lên bản đồ. Theo ý kiến của tôi, đó là tất cả về sự linh hoạt của Spring và mong muốn của họ để phù hợp với bất kỳ nhà phát triển nào.
Tôi sẽ không bao giờ sử dụng bản đồ cho các tham số đường dẫn, nhưng nó có thể khá hữu ích cho các tham số truy vấn.
@RequestParam MultiValueMap<String, String>