为什么我们需要注解“RequestParam()”

时间:2021-01-23 11:35:42

标签: java spring-boot

我现在正在学习 Spring Boot,我真的不明白为什么我们需要这个注解。在我看来,这个注解是用来重命名的。

fetch('https://reqres.in/api/users')
  .then(res => res.json())
  .then(data => {
    if (data && data.data && Array.isArray(data.data)) {
      data.data.forEach(function(user) {
        console.log(user);
      });
    }
  });

所以如果上面的代码正在运行,我可以这样传递我的名字: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,为什么我们不只是改变参数的名字呢?我想我可能误解了 RequestParam 的概念。

2 个答案:

答案 0 :(得分:3)

如果您只有少数具有默认行为的请求参数并且您可以轻松地根据需要命名它们,那么您是对的,RequestParam 注释并不是绝对必要的。但是,只要您在混合中添加 PathVariables 或请求参数,例如不再是必需的,而是可选的,您必须再次在那里添加注释。处理参数名称只是该注释的一个小方面。此外,您可能需要实现旧 API,其中 ReST API 级别的参数名称无法更改,但出于可读性、代码整洁或其他原因,您希望在代码中使用更好的名称。

答案 1 :(得分:1)

您没有误解这个概念,但您对它的了解有限。

  • @RequestParam 可用于重命名请求参数是正确的。为什么我们不只是更改参数的名称?如果你想有一个参数名称为“包”,你不能只将变量名称更改为包,因为它是java保留关键字,而是可以将其设为@RequestParam(name = "package") String othername

重命名只是@RequestParam 的一个用例,其他一些用途是:

  • 区分@RequestParam 和@PathVariable 变量
  • 使用必需属性 @RequestParam(required = false) 将参数设为可选。
  • 为请求参数 @RequestParam(defaultValue = "test") 添加默认值。
  • 更好的代码可读性。