• springMVC的注解@PathVariable是什么?详情及用法解析


    在路由中定义变量规则后,通常我们需要在处理方法(也就是@RequestMapping注解的方法)中获取这个URL变量的具体值,并根据这个值(例如用户名)做相应的操作,Spring MVC提供的@PathVariable可以帮助我们:

    @GetMapping("/users/{username}")
    public String userProfile(@PathVariable String username) {
        return String.format("user %s", username);
    }

    在上述例子中,当@Controller处理HTTP请求时,userProfile的参数username会被自动设置为URL中的对应变量username(同名赋值)的值,例如当HTTP请求为:/users/tianmaying,URL变量username的值tianmaying会被赋给函数参数username,函数的返回值自然也就是:String.format("user %s", username);,即user tianmaying

    在默认情况下,Spring会对@PathVariable注解的变量进行自动赋值,当然你也可以指定@PathVariable使用哪一个URL中的变量:

    @GetMapping("/users/{username}")
    public String userProfile(@PathVariable("username") String user) {
        return String.format("user %s", user);
    }

    这时,由于注解String user@PathVariable的参数值为username,所以仍然会将URL变量username的值赋给变量user

    @RequestParam

    @RequestParam和@PathVariable的区别就在于请求时当前参数是在url路由上还是在请求的body上,例如有下面一段代码:

        @RequestMapping(value="", method=RequestMethod.POST)
        public String postUser(@RequestParam(value="phoneNum", required=true) String phoneNum ) String userName) {
            userService.create(phoneNum, userName);
            return "success";
        }

    这个接口的请求url这样写:http://xxxxx?phoneNum=xxxxxx,也就是说被@RequestParam修饰的参数最后通过key=value的形式放在http请求的Body传过来,对比下上面的@PathVariable就很容易看出两者的区别了。

    @RequestBody直接以String接收前端传过来的json数据

    =================================

    参考资料:

    获取URL变量

    @RequestParam @RequestBody @PathVariable的作用

    end

    部分内容来自于学习编程期间收集于网络的免费分享资源和工作后购买的付费内容。
  • 相关阅读:
    关于IE11浏览器同意请求只执行一次的解决方法
    基于Vue+iView+OpenLayer在IE11上运行的方法总结
    vue 树形目录结构
    css中DIV中字过多时,使用省略号的方法
    hls.js在vue中的使用
    SQL优化
    Python 实现自动化 Excel 报表
    C# HttpClient 请求认证、数据传输笔记
    任务队列处理
    判断是否包含中文
  • 原文地址:https://www.cnblogs.com/MarlonKang/p/11648167.html
Copyright © 2020-2023  润新知