Spring @RequestParam與@PathVariable註釋的區別 | Baeldung

banq發表於2020-07-08

在本快速教程中,我們將探討Spring的@RequestParam和@PathVariable批註之間的區別。
@RequestParam和@PathVariable都可以用於從請求URI提取值,但是它們有些不同。
@RequestParam從查詢字串提取值:

@GetMapping("/foos")
@ResponseBody
public String getFooByIdUsingQueryParam(@RequestParam String id) {
    return "ID: " + id;
}

[b]http://localhost:8080/foos?id=abc[/b]
----
ID: abc


@PathVariables從URI提取路徑值:

@GetMapping("/foos/{id}")
@ResponseBody
public String getFooById(@PathVariable String id) {
    return "ID: " + id;
}
<p class="indent">[b]http://localhost:8080/foos/abc[/b]
----
ID: abc


兩者URL不同。因為@PathVariable從URI路徑中提取值,所以未對其進行編碼。另一方面,@  RequestParam則是對URI編碼。

@PathVariable未解碼URL引數:

http://localhost:8080/foos/ab+c
----
ID: ab+c


@RequestParam  請求該引數是URL解碼的:

http://localhost:8080/foos?id=ab+c
----
ID: ab c


完整原始碼可以在GitHub上找到

相關文章