@RequestBody获取不到参数问题

迷茫的21世纪的新轻年 2020-08-28 08:28:12
后端代码
swagger2测试过接口,没问题。
```
@PostMapping("/pageTeacherWrapper/{current}/{size}")
public ReturnCode pageListTeacherWrapper(
@PathVariable Integer current,
@PathVariable Integer size,
@RequestBody(required = false) SearchTeacher searchTeacher)

```


前端代码
前端 axios+vue

```
import request from '@/utils/request'

export default{
getTeacherListPage(current,size,searchTeacher){
return request({
url:`/eduservice/study-teacher/pageTeacherWrapper/${current}/${size}`,
method: 'post',
data: {
searchTeacher
}
})
}
}

```

可以在浏览器中查看到数据已发送




为什么后端获取为Null,发送数据不符合后端自动注入吗
...全文
5681 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程果实 2020-12-19
  • 打赏
  • 举报
回复
http://localhost:8001/serviceedu/edu-teacher/pageTeacherCondition/[object%20MouseEvent]/2 我和你差不多
  • 打赏
  • 举报
回复
引用 7 楼 qybao 的回复:
那你前端发送改成 data: searchTeacher //去掉花括号直接发送对象 或者改成 data: { ...searchTeacher //把searchTeacher的所有属性封装成一个对象,和上面等效 } 试试
好,我明天试试~ 谢谢 ,麻烦你啦
qybao 2020-08-29
  • 打赏
  • 举报
回复
那你前端发送改成 data: searchTeacher //去掉花括号直接发送对象 或者改成 data: { ...searchTeacher //把searchTeacher的所有属性封装成一个对象,和上面等效 } 试试
  • 打赏
  • 举报
回复
已解决:修改前端代码如下

import request from '@/utils/request'

export default{
    // 教师列表(条件查询带分页)
    //getTeacherListPage(当前页,页面大小,查询条件)
    getTeacherListPage(current,size,searchTeacher){
        return request({
            url:`/eduservice/study-teacher/pageTeacherWrapper/${current}/${size}`,
            method: 'post',
            data: {//后端RequestBody获取数据,前端使用data转化json传递到接口
                name: searchTeacher.name,
                level: searchTeacher.level,
                create: searchTeacher.create,
                end: searchTeacher.end
            }
          })
    }
}
直接传对象后端@RequestBody获取的json是 :
{"searchTeacher":{"level":1,***}}
而后端需要的json是:
{"level":1,***}
  • 打赏
  • 举报
回复
引用 4 楼 qybao 的回复:
[quote=引用 3 楼 小新没有蜡笔的 的回复:][quote=引用 1 楼 qybao 的回复:]前端请求的路径和后台的路径不一样 前端请求多了/eduservuce/study-teacher,你的路径层次结构是怎么控制的?有nginx之类的代理重写路径了吗?
回复在上面。。[/quote]你这是从localhost:9528跳到localhost:8080的跨域请求,你的axios的proxy配置对吗?除了上面的请求,其它的(api)请求后台能正常收到吗?[/quote] 注解@CrossOrigin好像可以解决跨域请求,其他如登陆请求都可以。。然后我用postman 和swagger测试接口,也都可以。@RequestBody里面我放的是查询条件,后台一直获取Null
qybao 2020-08-28
  • 打赏
  • 举报
回复
引用 3 楼 小新没有蜡笔的 的回复:
[quote=引用 1 楼 qybao 的回复:]前端请求的路径和后台的路径不一样 前端请求多了/eduservuce/study-teacher,你的路径层次结构是怎么控制的?有nginx之类的代理重写路径了吗?
回复在上面。。[/quote]你这是从localhost:9528跳到localhost:8080的跨域请求,你的axios的proxy配置对吗?除了上面的请求,其它的(api)请求后台能正常收到吗?
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
前端请求的路径和后台的路径不一样 前端请求多了/eduservuce/study-teacher,你的路径层次结构是怎么控制的?有nginx之类的代理重写路径了吗?
回复在上面。。
  • 打赏
  • 举报
回复
后端那个方法是在这里面,所以请求多了/eduservuce/study-teacher

@RestController
@RequestMapping("/eduservice/study-teacher")
@CrossOrigin
public class StudyTeacherController {
    @PostMapping("/pageTeacherWrapper/{current}/{size}")
    public ReturnCode pageListTeacherWrapper(@PathVariable Integer current,
                                                 @PathVariable Integer size,
                                             @RequestBody(required = false) SearchTeacher searchTeacher){
    }
}
前端vue-admin-template-3.8.0,没有用到nginx。
qybao 2020-08-28
  • 打赏
  • 举报
回复
前端请求的路径和后台的路径不一样 前端请求多了/eduservuce/study-teacher,你的路径层次结构是怎么控制的?有nginx之类的代理重写路径了吗?

81,114

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧