Золотые самородки сказали: я не могу заранее связать кусочки того, что происходит сейчас, и только когда я оглянусь в будущее, я пойму, как эти кусочки связаны. Итак, я должен верить:То, что происходит сейчас, будет связано воедино в будущем.Может быть, я не знаю прямо сейчас, хорошо ли это или пустая трата времени, чтобы написать это... но, оглядываясь назад в будущее, я буду знать, что оно того стоило.Потому что каждый процесс становится тем, кем ты являешься сейчас~
Оглядываясь назад, мы обычно используем две аннотации для получения параметров, чтобы различить связь и разницу между ними, нам еще нужно найти материалы, проверить самим, а затем систематизировать и закрепить впечатление. Так@RequestParam
а также@PathVariable
Разница между ними в том, что они оба могут использоваться для извлечения значения из URI запроса, но они несколько отличаются.
Параметры запроса и подклассы URL
- для
@RequestParam
Извлечь значение из строки запроса
@GetMapping("/pig")
public String getPigByIds(@RequestParam String ids) {
return "IDs: " + ids;
}
Просмотр через браузерhttp://localhost:8080/pig?ids=10085
Полученное значение идентификатора: 10085]
- для
@PathVariable
Извлечь значение пути из URI
@GetMapping("/pig/{id}")
public String getPigById(@PathVariable String id) {
return "ID: " + id;
}
Просмотр через браузерhttp://localhost:8080/pig/10085
Полученное значение идентификатора: 10085
Кодировка и точное значение
для@PathVariable
Извлеките базовое значение из URI, не кодируя его.
http://localhost:8080/pig/he+llo
----
ID: he+llo
Однако для@RequestParam
Извлечение значений из строк запроса требует кодирования. Параметр декодируется URL:
http://localhost:8080/pig?id=he+llo
----
ID: he llo
необязательное значение
несмотря ни на что@RequestParam
а также@PathVariable
Необязательный.
Начиная с Spring 4.3.3, мы можем сделать @PathVariable необязательным с необходимыми свойствами:
@GetMapping({"/mypig/optional", "/mypig/optional/{ids}"})
public String getPigByIds(@PathVariable(required = false) String ids){
return "IDs: " + ids;
}
Выполните следующее:
http://localhost:8080/mypig/optional/hello
----
ID: hello
или
http://localhost:8080/mypig/optional
----
ID: null
Для @RequestParam мы также можем использовать обязательный атрибут.
УведомлениеДелая @PathVariable необязательным, мы должны проявлять особую осторожность, чтобы избежать конфликтов путей.
добавить заголовок класса@RestController
опущен в методе@ResponseBody
В заключение
Фундамент не крепкий, земля трясется, записывайте.