前台传递POST与GET请求时,后台接收数据

今天9月30号,距离放假还有一天,划水过程中记录一下曾经遇到的问题。

get请求:在常规理解上来,是跟在地址栏后方的众多变量,在后台接收的时候,我们可以定义一个包装对象,或者是直接用参数来接收,或者用Map来接收都可以,其中我们可能会用到@RequestParam注解来对接收到的数据进行默认赋值,是否是必须字段等实现功能。

post请求:post请求是接收一个表单内部的数据,我们平时采用的方式也是定义包装类对象来接收。当然,在前后端分离的情况下(前台向后台传递一个JSON字符串时),我们要采用@RequestBody来将其转化为我们所要的包装类对象。那么重头戏来了,设计个场景:

前台向后台传递JSON字符串数据时,一个包装类无法存放方法体中的数据(即有部分属性不在你定义的包装类中时),那么当接收数据的时候,可以用两个对象(都采用@RequestBody)来接收吗?答案是不可以,因为一个post请求也只传递一个整体表单数据,同样@RequestBody在入参中只能定义一次,将表单数据封装成一个对象接收。针对这种情况,解决办法 ,可以重新定义一个接收参数的包装类,当然这样有点费事。我个人习惯的两种用法,在入参处定义一个Map,然后针对性的从Map当中取数据,或者在参数中将所有属性都一一定义成局部变量,采用@RequestParam注解从前台也可以获取到值,代入其中去运算。

公司目前在用微服务,简单的理解,就是把我们平时所用的Service层给注册成一个服务,Controller层对其进行远程调用。那么在传递POST请求与GET请求时,Service的服务请求类型和Controller接收到的请求类型并无关联,可以随意使用。

随手记录一下。

猜你喜欢

转载自blog.csdn.net/key_wu/article/details/82908893