天天看点

3.@RequestParma和@PathVariable的用法和区别

前言

  我相信很多程序员都会在自己的项目中使用到Restful风格来安全便捷地进行接口的编写,因此本文这篇博客来简要介绍一下controller方法中的两个注解:@RequestParma和@PathVariable的使用和不同点

1.两个注解的用法

  1.1 注解的位置

    两个注解都是作为形参的别名注解在方法括号中形参的前面

@RequestMapping("/user/{uerId}}")
public JsonResuilt<Void> getUserByUid(@PathVariable("userId") Integer uid)
@RequestMapping("/user/{uerId}}")
public JsonResuilt<Void> getUserByUid(@RequestParam("userId") Integer uid)      

  1.2 注解的使用

  • 给方法中的形参取别名,例如userId就是形参uid的别名
@PathVariable("userId") Integer uid      
  • 安全地传值,将uid的值在URL中使用别名userId传递
@RequestMapping("/user/{uerId}}")
public JsonResuilt<Void> getUserByUid(@RequestParam("userId") Integer uid)      

2.两个注解的相同点和区别

  2.1 相同点

  • 两者都是Restful风格的注解,都可以在URL上面动态地传值
  • 两者都可以为方法中的形参取别名,安全地传递参数

  2.2 不同点

  • @RequestParam 更适用于增删改等方法的形参传值,显示优雅
http://localhost:8080/user/login?name=小文&pwd=123456      
@PostMapping("/change_password")
    public JsonResult<String> changePassword(@RequestParam(value = "oPwd", required = false) String oldPassword,
                                            @RequestParam(value = "nPwd", required = false) String newPassword,
                                            HttpSession session)      
  • @PathVariable 常用与查询方法的形参传值:
http://localhost:8080/wo/get_by_uid/1      
@GetMapping("/get_by_uid/{userId}") 
public JsonResult<SysUser> getByUid(@Pathvariable("userId") Integer uid, String username
){
        Integer uid = getUidFromSession(session);
        SysUser data = userDetailsService.getByUid(uid);
        return new JsonResult<SysUser>(OK, data);
    }