@RequestParam,@PathVariable和@RequestBody三者区别

@RequestParam注解

顾名思义:获取参数,即是获取传送过来的参数;例如获取下面链接的id参数值:

//链接(注意链接格式区别)
http://localhost:8090/hello?id=2
//使用@RequestParam注解获取id
public String Demo1(@RequestParam String id){
    System.out.println("链接中请求参数的id:"+id);
    return null;
}

此时@RequestParam的作用就可以获取id下来并且作为形参传给方法体里面的id

@PathVariable注解

顾名思义:路径变量,即是获取链接路径上的变量,例如获取下面链接的id

//链接(注意比较上面一条链接)
http://localhost:8090/hello/2
//使用@PathVariable注解获取id
@RequestMapping(value = "/getBook/{id}", method = RequestMethod.GET)
public String getBook(@PathVariable Integer id) {
     try {
            system.out.println("路径上的id:"+id);
        } catch (ParseException e) {
            e.printStackTrace();
    }
    return null;
}

此时@PathVariable的作用是将路径上的id获取进来传递给方法体里面的形参id,但是变量名称必须一样,比如这里:value = "/getBook/{id}"@PathVariable Integer id;两个都要是id,如果不同则报错;

@RequestBody注解

首先说下,@RequestBody注解一般主要是用来处理content-type:"application/json charset=utf-8"或者content-type:"application/xml charset=utf-8"两种请求数据,一般是异步请求用的比较多些,例如:

//异步请求部分代码
$.ajax({
        url:"/hello",
        type:"POST",
        data:‘{"id":"123","name":"chenyc"}‘,
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert(data);
        }
    });
//@requestBody注解获取数据代码
@requestMapping("/hello")
    public String hello(@requestBody Integer id,@requestBody String name){
      System.out.println("id:"+id+";"+"name:"+name);
    }

此时@requestBody注解就可以获取到请求中的各个参数然后赋值到相对应的方法形参上,另外,当有一个实体类User包含了idname的元素的话,在方法里面直接可以写@requestBody User user就会自动封装好给我们使用的了,不用麻烦像这样@requestBody Integer id,@requestBody String name一个一个的封装

原文地址:https://www.cnblogs.com/chengxiaodi/p/11324611.html

时间: 2024-07-31 07:00:42

@RequestParam,@PathVariable和@RequestBody三者区别的相关文章

@[email protected] @PathVariable @RequestParam三者区别

一.问题描述 由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口.接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报错:在post请求下,后台接收参数的注解为RequestParam时也会报错. 二.问题原因 由于spring的RequestParam注解接收的参数是来自于requestHeader中,即请求头,也就是在url中,格式为xxx?username=123&password=456,而RequestB

post传参params与body的区别(@RequestParam和@RequestBody的区别)

1.axios post请求  Content-Type默认为 application/x-www-form-urlencoded,我们传递参数的时,params里面的参数(简单的对象,通过 "{}" 或者 "new Object" 创建的)会被以&拼接的方式拼接到请求地址的后面,data里面的参数(简单的对象,通过 "{}" 或者 "new Object" 创建的)会以Form Data的形式存在,但是Form Da

QWidget QMainWindow QDialog 三者区别

Qt类是一个提供所需的像全局变量一样的大量不同的标识符的命名空间.通常情况下,你可以忽略这个类.QObject和一些其它类继承了它,所以在这个Qt命名空间中定义的所有标识符通常情况下都可以无限制的使用. QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个原子:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己的表现.每一个窗口部件都是矩形,并且它们按Z轴顺序排列的.一个窗口部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分. QMainWindow 类提供一个有菜单

C# 总结const、 readonly、 static三者区别:

总结const. readonly. static三者区别: (有人问我,看似简单,我也没能立刻回答出来,总结一下,分享一下.) const:静态常量,也称编译时常量(compile-time constants),属于类型级,通过类名直接访问,被所有对象共享! a.叫编译时常量的原因是它编译时会将其替换为所对应的值: b.静态常量在速度上会稍稍快一些,但是灵活性却比动态常量差一些: c.静态常量,隐式是静态的,即被static隐式修饰过,不能再用static重复修饰, d.在声明时初始化: e

SpringMVC使用@PathVariable,@RequestBody,@ResponseBody,@RequestParam

@Pathvariable public ResponseEntity<String> ordersBack(           @PathVariable String reqKey,           @RequestParam(value="intVal") Integer intVal,           @RequestParam(value="strVal") String strVal) throws Exception{      

spring boot的@RequestParam和@RequestBody的区别

尊重原创:https://blog.csdn.net/u013306545/article/details/79071683 一.问题描述 由于项目是前后端分离,因此后台使用的是spring boot,做成微服务,只暴露接口.接口设计风格为restful的风格,在get请求下,后台接收参数的注解为RequestBody时会报错:在post请求下,后台接收参数的注解为RequestParam时也会报错. 二.问题原因 由于spring的RequestParam注解接收的参数是来自于requestH

@RequestParam和@RequestBody的区别

@RequestBody是用来接收 application/json需要解析json字符串,然后通过json获取参数,这里用到是fastjson public CommonReturnType login(@RequestBody String jsonStr) { JSONObject requestJson = JSON.parseObject(jsonStr); String telphone=(String)requestJson.get("telphone"); String

轻应用、Web app 、Native app三者区别关系是什么?

[龙友导读]最近百度公司在大会上宣布推出“轻应用”.轻应用到底是什么呢,和我们说的web app.native app到底有什么区别?是新生物的诞生还是概念的炒作?所以,今天特意为大家整理分享一篇这方面的文章!~希望对大家有用!(没用,龙哥自己看,哈!~) 首先,先说说我们现在正在使用,大家都了解的Native App. 一.什么是Native app Native App是一种基于智能手机本地操作系统如IOS.Android.WP并使用原生程式编写运行的第三方应用程序,也叫地app.Nativ

SessionStorage LocalStorage cookie三者区别

sessionStorage 和 localStorage 是HTML5 Web Storage API 提供的,可以方便的在web请求之间保存数据.有了本地数据,就可以避免数据在浏览器和服务器间不必要地来回传递. sessionStorage.localStorage.cookie都是在浏览器端存储的数据,其中sessionStorage的概念很特别,引入了一个"浏览器窗口"的概念.sessionStorage是在同源的同窗口(或tab)中,始终存在的数据.也就是说只要这个浏览器窗口