列举一下@RequestParam接收参数的几种前后端对应情况:
大前提:
1,如果后端使用了@RequestParam,前端就必须提供相应的参数,否则会报400并提示所需参数不存在。如果有多个@RequestParam,只会提示第一个。
2,如果使用request.getParameter(“xxx”)接收参数,就不存在这种情况,即使前端不提供相应参数,后端只是获取到空值,但是不会报错。
一,前端用vue,get请求,参数拼接在url中:
后端用@RequestParam或者request.getParameter(“xxx”)都可以获取所需参数。
二,前端vue,post请求,参数在请求体中,不拼接在url上:
后端无法获取参数,并且报错。
三,前端html页面上,在表单里写参数
后端用@RequestParam或者request.getParameter(“xxx”)都可以获取所需参数。
四,前端html,把参数拼接在url里
后端用@RequestParam或者request.getParameter(“xxx”)都可以获取所需参数。
五,当参数直接放在url中,不使用键值对时:
后端使用@PathVariable可获取此类参数,但是request.getParameter(“xxx”)获取不到。并且如果把@PathVariable改成@RequestParam会报400错误
六,后端没有使用@RequestParam,但是使用了简单类型接收参数,
比如用name,那么前端可以传参数也可以不传参数,如果前端有相应的名称的参数,则后端自动匹配,如果前端没有,则后端获取到的位null
下图是自动匹配的,
下边两图是前端修改了参数名,与后端不匹配,后端获取到的参数为空
七,前端将参数放在url中,后端使用对象接收
注意前端传的key-value 要跟后端接收参数用的对象中的属性一致。