axios发送post请求,服务端无法正常获取参数(比如:node服务器无法通过req.body获取参数)解决方案

前端通过 axios 方式请求nodejis后端数据的过程中,如果是 get 请求,服务器端能够通过 req.query 获取前端传递的参数再向数据库获取数据;但是如果是 post 请求,服务器却不能通过 req.body 获取参数。

解决办法:

前端 引用 “qs” ,然后在发送 axios 请求时,使用 qs.stringify()将数据包裹起来。

import qs from 'qs'
import $http from '../../ajax/http.js'

$http({
          method: "POST",
          url: "/blog/check_login_status/",
          data: qs.stringify(values)
        })
        .then(res => {
            localStorage['token'] = 1;
            this.props.history.replace("/");
        })
        .catch(err => {
            notification["error"]({
                message: '错误图示',
                description:
                  '用户名或密码错误',
            });
});

http.js: 

import axios from 'axios'

let _this = this;

let HTTP = axios.create({
  baseURL:'/',
  timeout: 10000,        //单位是ms,请求超过这个时间就取消,即请求超时
  responseType: 'json',  //后端返回的数据类型
  // header:{  //自定义请求头
     'custom-header':'xiao',  //Request Headers里面就多了一个custom-header:xiao,后端可以拿到这个数据
  //   'content-type':'application/x-www-form-urlencoded'  //设置这个,那么经过transformRequest处理之后的数据格式就变为了  miaov=ketang&username=leo,只支持POST请求方式
  // },
  params: {  //查询字符串,传给后端的数据,不管是get还是post请求,这条数据都会附在url后面,发送给后端
    //TOKEN: localStorage['TOKEN']
  },
  transformResponse: [function (data) {   //数组格式,用于处理返回的数据格式,data是后端发送回来的数据
    data.abc = 'miaov'  //对返回数据做进一步处理,请求此类地址的返回值都拥有abc这个属性,值是miaov
    return data;  //需要return出来
  }]
});

//添加一个请求拦截器:请求之前的拦截
HTTP.interceptors.request.use(function (config) {  //config就是自定义请求的配置信息,即HTTP的配置参数
  //在发送请求之前做某事
  //console.log("拦截请求之前提交的数据:");
  //console.log(config)
  //这里可以对配置项config做处理,取消某些配置或增加
  config.headers.TOKEN = localStorage['TOKEN'];
  return config;  //return config请求会继续进行,否则请求就被拦截了
}, function (error) {
  //请求错误时做些事
  return Promise.reject(error);
});

//添加一个请求拦截器:请求之后的拦截
HTTP.interceptors.response.use(res => {
  // 响应失败
  // if (!res.data.success) {
  //   Toast(res.data.msg);
  // }

  /**
  * refresh_token过期
  * 1、清空本地token
  * 2、刷新页面
  */
 //console.log("拦截器拦截的数据:");
 //console.log(res);

  // if (res.data.code === '004-1') {
  //   //localStorage.setItem('TOKEN', '')
  //   localStorage['TOKEN'] = '';
  //   window.location.reload();
  // }

  return res.data;
}, error => {
  _this.$notify.error({
    title: "错误",
    message: error.message,
    duration: 0
  });
})

export default HTTP;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值