1最近在写springboot+vue做增删改查时,需要由前端axios发送post请求,传输学生uid到后台,后台拿到的数据多了一个等号,百思不得其解,搜集过大量资料后发现是前后端数据传输类型不同的原因。

前端发送axios请求时,默认的请求头headers内部的Content-Type是application/x-www-form-urlencoded;charset=UTF-8,这是一种键值对的数据结构,前端传过来的内容是放在k中,v为空,这时候取值时,内容就变成了k=,也就是为什么后端接收的数据,末尾多了一个=

解决:

需要在发送axios请求时设置请求头headers信息

this.axios.post("/deleteUser", uid, {
        headers: {
          'Content-Type': 'application/json'
        }
      }).then((response) => {
        if (response.data) {
          // 删除成功
          this.$message({
            message: response.data.message,
            type: 'success'
          })
        } else {
          // 删除失败
          this.$message.error(response.data.message);
        }
      }).finally(() => {
      })

controller层:

    //根据id删除用户
//    @RequestMapping(value ="/deleteUser" ,method = RequestMethod.POST)
//    @PostMapping(value = "/deleteUser",produces = "application/json;charset=UTF-8")
//    @ResponseBody
    @RequestMapping(value = "/deleteUser",produces = "application/json;charset=UTF-8")//指定接收数据的格式
    public boolean deleteUser(@RequestBody(required = false) String uid) throws UnsupportedEncodingException {
//        String id = URLDecoder.decode(uid,"UTF-8");

        System.out.println("???????");
        System.out.println(uid);
        return userMapper.deleteUser(uid);
    }

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐