说明:
(1)为什么写了本篇博客?:在【Spring Boot电商项目23:商品分类模块二:【增加目录分类】接口;】中,发现有的POST请求的参数放在了url后,有的放在了Body中;对此,存在疑惑的地方;所以写了本篇博客;
同时,本篇博客也顺手总结了@Param,@RequestParam,@RequestBody这三个【与接收参数有关】的注解;
(2)本篇博客参考的文章有:
● 本篇博客参考了一个知乎问答【Post 方法参数写在body中和写在url中有什么区别?】;
(3)声明:本篇博客的主要目的是【帮助自己形成自洽】;但是,自己深刻感受到,对HTTP协议的了解还是太浅了;以后,需要慢慢提升;
目录
1.POST请求:方法参数放在url中和放在body中,有什么区别?:参考知乎的回答;
2.比如,本项目中;(包括【@Param,@RequestParam,@RequestBody这三个【与接收参数有关】的注解,总结)
(1)POST请求,可以把参数放在url中;(涉及,@RequestParam注解)
(2)POST请求,可以把参数放在body中;(涉及,@RequestBody注解)
1.POST请求:方法参数放在url中和放在body中,有什么区别?:参考知乎的回答;
这儿的内容,完全照抄自知乎问答【Post 方法参数写在body中和写在url中有什么区别?】,该回答的作者是【严振杰】;
2.比如,本项目中;(包括【@Param,@RequestParam,@RequestBody这三个【与接收参数有关】的注解,总结)
(1)POST请求,可以把参数放在url中;(涉及,@RequestParam注解)
PS:在【SpringMVC入门与数据绑定5:Spring MVC数据绑定二:Controller接收请求中的参数之:使用【方法参数】接收;(PS:包括get请求时使用的@RequestParam())】第一次介绍了【@RequestParam注解】;
目前来看这儿的逻辑是(起码目前可以这样看):【get请求,参数是放在url中,而且经常出现如user_name这样的名字;;;为了能以userName的方式接收到这个参数;;;我们就使用了@RequestParam注解】→【然后,@RequestParam注解可以推广开来;;;凡是参数是在url中的请求,,,,都可以使用@RequestParam注解去接收】→【于是,即使对于POST请求,如果参数在url中,也可以使用@RequestParam注解】→【其实,如果参数名和接口中的参数名写对,即使不用@RequestParam注解,也是能接收到参数的;;;;也就是说,@RequestParam注解可以看成是一种保险】;
补充(20220310):如果后端是使用方法参数(而不是Java Bean)去接收参数时,才能使用@RequestParm注解;;;如果前端的参数放在url中,而后端是使用JavaBean去接收参数,那么我们是不能使用@RequestPram注解的;
……………………………………………………
(2)POST请求,可以把参数放在body中;(涉及,@RequestBody注解)
声明:对于POST请求,如果参数放在body中,我们必须使用@RequestBody注解才能接收到参数;如果不加,无法从请求体中获取数据,就会提示错误。
即,@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);GET方式无请求体,所以使用@RequestBody接收数据时,前端不能使用GET方式提交数据,而是用POST方式进行提交。
……………………………………………………
(3)额外插:@Param注解;
最近一次说道@Param注解,是在【Spring Boot电商项目19:用户模块八:普通用户登录接口开发;(一个特别需要注意的点:对于Mybatis来说,如果Mapper接口中的方法的参数不止一个,需要使用@Param注解;)】;
(1)上一次在Mapper接口的方法中,使用【@Param注解】是在【OA系统十七:请假申请三:【请假申请】这个内嵌界面中【提交请假表单数据】的Service层;(PS:在EmployeeDao中初次遇到@Param()参数设置)】;
(2)对于Mybatis来说,如果Mapper接口中的方法只有一个参数的话,是可以不用【@Param注解】注解的;但是,如果有多个参数的话,是一定要使用【@Param注解】注解的;否则,mapper.xml中的SQL语句在获取参数的时候,就会混乱;(即@Param注解的作用类似于:给其参数起个别名,在投入到SQL之前,最后归整一下)
下图说道不不严谨,重点看下划线的部分(存疑);