Зачем нам нужна аннотация «RequestParam()»

#java #spring-boot

#java #spring-boot

Вопрос:

Я сейчас изучаю Spring Boot, я действительно не понимаю, зачем нам нужна эта аннотация. На мой взгляд, эта аннотация используется для переименования.

 public String home(@RequestParam("name") String othername, HttpSession session){
          
          session.setAttribute("name", othername);
          return "home.jsp"

}
 

Итак, если приведенный выше код запущен, я могу передать свое имя следующим образом: http://127.0.0.1:8080/home?name=bob

Но если у меня нет аннотации, я могу только сделать http://127.0.0.1:8080/home?othername=bob , почему мы просто не меняем имя параметра? Я думаю, что я могу неправильно понять концепцию RequestParam.

Ответ №1:

Если у вас есть только несколько параметров запроса с поведением по умолчанию, и вы можете легко назвать их по своему усмотрению, тогда вы правы, RequestParam аннотация не является строго необходимой. Однако, как только вы добавляете переменные пути в микс или параметр запроса, например, больше не требуется, но необязательно, вам нужно снова добавить туда аннотацию. Обработка имен параметров — это всего лишь один небольшой аспект этой аннотации. Кроме того, вам, возможно, придется реализовать устаревший API, где имена параметров на уровне ReST API не могут быть изменены, но вы хотите иметь лучшее имя в своем коде для удобства чтения, чистого кода или по другим причинам.

Ответ №2:

Вы правильно поняли концепцию, но ваши знания о ней ограничены.

  • Правильно, что @RequestParam можно использовать для переименования параметра запроса. Почему мы просто не меняем имя параметра? Что, если вы хотите иметь имя параметра как «package», вы не можете просто изменить имя переменной на package, поскольку это зарезервированное ключевое слово java, но вы можете иметь его как @RequestParam(name = "package") String othername .

Переименование — это всего лишь один из вариантов использования @RequestParam некоторые другие варианты использования:

  • Различает переменные @RequestParam и @PathVariable
  • Сделайте параметр необязательным с обязательным атрибутом @RequestParam(required = false) .
  • Добавьте значение по умолчанию для параметра запроса @RequestParam(defaultValue = "test") .
  • Улучшенная читаемость кода.