前端调用后台接口传递json格式数据时,后台获取不到传递的参数,以前解决这个问题脑海中一直都是比较模糊的,最后解决了却并不清楚是什么原因,鉴于昨天又再次碰到了,一时又不知如何是好,遂再此做下记录,加强印象,也希望可以帮助到大家。
--------------------------------------------------------------
首先后台有一个这样的接口
实体类Blog
模拟请求工具我用的是postman进行请求模拟
首先模拟一直获取不到数据的错误请求,模拟数据如下
后端debug可以看到是获取不到参数的,都是null
为什么获取不到,其实原因就在于前端发送的json数据格式问题上,看下上图发送的json数据体,外面大括号里面包着一个key值为blog,value类型为Blog的类型数据,其实后端如果要接收的话对应的格式应该是这样的,我们重新修改下后台接收的入参实体
然后接口改为
依然在postman中使用如下请求参数
后台debug我们看下
可以看到这次数据有了
这里其实后台接口的入参名称就是经常误导我的地方,后台定义的入参名称是blogParam,但是前端请求的时候并没有一个名称,其实前端在使用json作为参数请求时,后端使用requestBody接收时是不会使用入参名称来进行匹配,而是按照类型去匹配的,也就是前端传递一个json格式数据,后端会解析然后给对应的属性设值
那如果我想使用原先接口的入参来接收呢,只有修改下前端请求的数据体
这样可以看到原先接口获取不到的数据现在已经有数据了,问题也顺利解决了
遇到的问题还是得要知道原因是什么,这样下次遇到了才能知道如何解决